10#include <fmt/format.h>
33 void on_warning(std::string_view what)
override;
34 void on_error(std::string_view what)
override;
40 static std::size_t get_terminal_width();
44 template <fmt::formattable T>
45 auto style(
const T& arg, fmt::text_style style)
const ->
decltype(fmt::styled(arg, style));
47 template <fmt::formattable T>
48 std::string style_str(
const T& arg, fmt::text_style style, fmt::format_string<T> fmt =
"{}")
const;
58 static std::string pluralize(std::string_view root,
int count, std::string_view suffix =
"s",
59 std::size_t replace_last_chars = 0);
66 static constexpr auto ERROR_STYLE = fmt::fg(fmt::color::red) | fmt::emphasis::bold;
67 static constexpr auto WARNING_STYLE = fmt::fg(fmt::color::yellow) | fmt::emphasis::bold;
68 static constexpr auto SUCCESS_STYLE = fmt::fg(fmt::color::lime_green);
69 static constexpr auto POP_OUT_STYLE =
70 fmt::emphasis::underline | fmt::emphasis::bold | fmt::fg(fmt::color::golden_rod);
71 static constexpr auto VALUE_STYLE = fmt::fg(fmt::color::aqua);
73 static constexpr std::size_t DEFAULT_WIDTH = 80;
75 static constexpr auto MAKE_LINE_DIVIDER = [](
char chr) {
76 return [chr](std::size_t len) {
return std::string(len, chr); };
83 static const inline auto LINE_DIVIDER = MAKE_LINE_DIVIDER(
'-');
84 static const inline auto LINE_DIVIDER_EM = MAKE_LINE_DIVIDER(
'=');
85 static const inline auto LINE_DIVIDER_2EM = MAKE_LINE_DIVIDER(
'#');
88 std::size_t terminal_width_;
91template <fmt::formattable T>
92auto PlainTextSerializer::style(
const T& arg, fmt::text_style style)
const ->
decltype(fmt::styled(arg, style)) {
94 return fmt::styled(arg, {});
96 return fmt::styled(arg, style);
99template <fmt::formattable T>
100std::string PlainTextSerializer::style_str(
const T& arg, fmt::text_style style, fmt::format_string<T> fmt)
const {
102 return fmt::vformat(fmt.str, fmt::vargs<T>{arg});
105 return fmt::vformat(style, fmt.str, fmt::vargs<T>{arg});
Definition plaintext_serializer.hpp:19
void on_student_begin(const StudentInfo &info) override
Definition plaintext_serializer.cpp:183
void on_run_metadata(const RunMetadata &data) override
Definition plaintext_serializer.cpp:266
void on_assignment_result(const AssignmentResult &data) override
Definition plaintext_serializer.cpp:90
void on_test_result(const TestResult &data) override
Definition plaintext_serializer.cpp:69
void on_error(std::string_view what) override
Definition plaintext_serializer.cpp:261
void on_test_begin(std::string_view test_name) override
Definition plaintext_serializer.cpp:59
PlainTextSerializer(Sink &sink, ProgramOptions::ColorizeOpt colorize_option, ProgramOptions::VerbosityLevel verbosity)
Definition plaintext_serializer.cpp:35
void finalize() override
Definition plaintext_serializer.cpp:154
void on_warning(std::string_view what) override
Definition plaintext_serializer.cpp:256
void on_requirement_result(const RequirementResult &data) override
Definition plaintext_serializer.cpp:41
void on_student_end(const StudentInfo &info) override
Definition plaintext_serializer.cpp:246
Definition serializer.hpp:13
Defines data classes to store result data for the current run session.
Definition asm_buffer.hpp:19
Definition grading_session.hpp:113
VerbosityLevel
See Description of Levels for an explaination of each of the levels. Max is just used as a sentinal f...
Definition program_options.hpp:37
ColorizeOpt
Definition program_options.hpp:53
Definition grading_session.hpp:72
Definition grading_session.hpp:151
Definition grading_session.hpp:93