13#include <fmt/format.h>
18#include <unordered_map>
36 void on_warning(std::string_view what)
override;
37 void on_error(std::string_view what)
override;
45 static std::size_t get_terminal_width();
49 template <fmt::formattable T>
50 auto style(
const T& arg, fmt::text_style style)
const ->
decltype(fmt::styled(arg, style));
52 template <fmt::formattable T>
53 std::string style_str(
const T& arg, fmt::text_style style, fmt::format_string<T> fmt =
"{}")
const;
66 static std::string pluralize(std::string_view root,
int count, std::string_view suffix =
"s",
67 std::size_t replace_last_chars = 0);
74 static constexpr auto ERROR_STYLE = fmt::fg(fmt::color::red) | fmt::emphasis::bold;
75 static constexpr auto WARNING_STYLE = fmt::fg(fmt::color::yellow) | fmt::emphasis::bold;
76 static constexpr auto SUCCESS_STYLE = fmt::fg(fmt::color::lime_green);
77 static constexpr auto POP_OUT_STYLE =
78 fmt::emphasis::underline | fmt::emphasis::bold | fmt::fg(fmt::color::golden_rod);
79 static constexpr auto VALUE_STYLE = fmt::fg(fmt::color::aqua);
81 static constexpr std::size_t DEFAULT_WIDTH = 80;
83 static constexpr auto MAKE_LINE_DIVIDER = [](
char chr) {
84 return [chr](std::size_t len) {
return std::string(len, chr); };
91 static const inline auto LINE_DIVIDER = MAKE_LINE_DIVIDER(
'-');
92 static const inline auto LINE_DIVIDER_EM = MAKE_LINE_DIVIDER(
'=');
93 static const inline auto LINE_DIVIDER_2EM = MAKE_LINE_DIVIDER(
'#');
96 std::size_t terminal_width_;
100 std::unordered_map<std::string, std::size_t> repeat_requirements_;
103template <fmt::formattable T>
104auto PlainTextSerializer::style(
const T& arg, fmt::text_style style)
const ->
decltype(fmt::styled(arg, style)) {
106 return fmt::styled(arg, {});
108 return fmt::styled(arg, style);
111template <fmt::formattable T>
112std::string PlainTextSerializer::style_str(
const T& arg, fmt::text_style style, fmt::format_string<T> fmt)
const {
114 return fmt::vformat(fmt.str, fmt::vargs<T>{arg});
117 return fmt::vformat(style, fmt.str, fmt::vargs<T>{arg});
Definition plaintext_serializer.hpp:23
void on_student_begin(const StudentInfo &info) override
Definition plaintext_serializer.cpp:223
void on_run_metadata(const RunMetadata &data) override
Definition plaintext_serializer.cpp:308
void on_assignment_result(const AssignmentResult &data) override
Definition plaintext_serializer.cpp:129
void on_test_result(const TestResult &data) override
Definition plaintext_serializer.cpp:108
void on_error(std::string_view what) override
Definition plaintext_serializer.cpp:303
void on_test_begin(std::string_view test_name) override
Definition plaintext_serializer.cpp:98
PlainTextSerializer(Sink &sink, ProgramOptions::ColorizeOpt colorize_option, VerbosityLevel verbosity)
Definition plaintext_serializer.cpp:52
void finalize() override
Definition plaintext_serializer.cpp:194
void on_warning(std::string_view what) override
Definition plaintext_serializer.cpp:298
void on_requirement_result(const RequirementResult &data) override
Definition plaintext_serializer.cpp:58
void on_student_end(const StudentInfo &info) override
Definition plaintext_serializer.cpp:288
Definition serializer.hpp:14
Defines data classes to store result data for the current run session.
Definition asm_buffer.hpp:20
VerbosityLevel
See Description of Levels for an explaination of each of the levels. Max is just used as a sentinal f...
Definition verbosity.hpp:9
See asmgrader::stringize.
Definition grading_session.hpp:119
ColorizeOpt
Definition program_options.hpp:44
Definition grading_session.hpp:75
Definition grading_session.hpp:157
Definition grading_session.hpp:99
Representation of an expression with all components stringized.
Definition requirement.hpp:152
Result type of a call to str or repr
Definition stringize.hpp:39