C++ Utilities  5.8.0
Useful C++ classes and routines such as argument parser, IO and conversion utilities
ansiescapecodes.cpp
Go to the documentation of this file.
1 #include "./ansiescapecodes.h"
2 
3 namespace CppUtilities {
4 
8 namespace EscapeCodes {
9 
22 bool enabled =
23 #ifdef CPP_UTILITIES_ESCAPE_CODES_ENABLED_BY_DEFAULT
24  true
25 #else
26  false
27 #endif
28  ;
29 
33 std::ostream &operator<<(std::ostream &stream, Phrases phrase)
34 {
35  switch (phrase) {
36  case Phrases::Error:
37  setStyle(stream, Color::Red, ColorContext::Foreground, TextAttribute::Bold);
38  stream << "Error: ";
39  setStyle(stream, TextAttribute::Reset);
40  setStyle(stream, TextAttribute::Bold);
41  break;
42  case Phrases::Warning:
43  setStyle(stream, Color::Yellow, ColorContext::Foreground, TextAttribute::Bold);
44  stream << "Warning: ";
45  setStyle(stream, TextAttribute::Reset);
46  setStyle(stream, TextAttribute::Bold);
47  break;
48  case Phrases::End:
49  setStyle(stream, TextAttribute::Reset);
50  stream << '\n';
51  break;
52  case Phrases::PlainMessage:
53  stream << " ";
54  setStyle(stream, TextAttribute::Reset);
55  setStyle(stream, TextAttribute::Bold);
56  break;
57  case Phrases::SuccessMessage:
58  setStyle(stream, Color::Green, ColorContext::Foreground, TextAttribute::Bold);
59  stream << "==> ";
60  setStyle(stream, TextAttribute::Reset);
61  setStyle(stream, TextAttribute::Bold);
62  break;
63  case Phrases::SubMessage:
64  setStyle(stream, Color::Green, ColorContext::Foreground, TextAttribute::Bold);
65  stream << " -> ";
66  setStyle(stream, TextAttribute::Reset);
67  setStyle(stream, TextAttribute::Bold);
68  break;
69  case Phrases::ErrorMessage:
70  setStyle(stream, Color::Red, ColorContext::Foreground, TextAttribute::Bold);
71  stream << "==> ERROR: ";
72  setStyle(stream, TextAttribute::Reset);
73  setStyle(stream, TextAttribute::Bold);
74  break;
75  case Phrases::WarningMessage:
76  setStyle(stream, Color::Yellow, ColorContext::Foreground, TextAttribute::Bold);
77  stream << "==> WARNING: ";
78  setStyle(stream, TextAttribute::Reset);
79  setStyle(stream, TextAttribute::Bold);
80  break;
81  case Phrases::EndFlush:
82  setStyle(stream, TextAttribute::Reset);
83  stream << std::endl;
84  break;
85  case Phrases::Info:
86  setStyle(stream, Color::Blue, ColorContext::Foreground, TextAttribute::Bold);
87  stream << "Info: ";
88  setStyle(stream, TextAttribute::Reset);
89  setStyle(stream, TextAttribute::Bold);
90  break;
91  case Phrases::Override:
92  eraseLine(stream);
93  stream << '\r';
94  break;
95  case Phrases::SubError:
96  setStyle(stream, Color::Red, ColorContext::Foreground, TextAttribute::Bold);
97  stream << " -> ERROR: ";
98  setStyle(stream, TextAttribute::Reset);
99  setStyle(stream, TextAttribute::Bold);
100  break;
101  case Phrases::SubWarning:
102  setStyle(stream, Color::Yellow, ColorContext::Foreground, TextAttribute::Bold);
103  stream << " -> WARNING: ";
104  setStyle(stream, TextAttribute::Reset);
105  setStyle(stream, TextAttribute::Bold);
106  break;
108  setStyle(stream, Color::White, ColorContext::Foreground, TextAttribute::Bold);
109  stream << "==> ";
110  setStyle(stream, TextAttribute::Reset);
111  setStyle(stream, TextAttribute::Bold);
112  break;
113  }
114  return stream;
115 }
116 
117 std::string_view phraseString(Phrases phrase)
118 {
119  using namespace std::string_view_literals;
120  switch (phrase) {
121  case Phrases::Error:
122  return "Error: "sv;
123  case Phrases::Warning:
124  return "Warning: "sv;
125  case Phrases::PlainMessage:
126  return " "sv;
127  case Phrases::SuccessMessage:
128  return "==> "sv;
129  case Phrases::SubMessage:
130  return " -> "sv;
131  case Phrases::ErrorMessage:
132  return "==> ERROR: "sv;
133  case Phrases::WarningMessage:
134  return "==> WARNING: ";
135  case Phrases::Info:
136  return "Info: "sv;
137  case Phrases::SubError:
138  return " -> ERROR: "sv;
139  case Phrases::SubWarning:
140  return " -> WARNING: "sv;
142  return "==> "sv;
143  case Phrases::End:
144  case Phrases::EndFlush:
145  return "\n";
146  default:
147  return std::string_view{};
148  }
149 }
150 
151 } // namespace EscapeCodes
152 
153 } // namespace CppUtilities
CppUtilities::EscapeCodes::eraseLine
void eraseLine(std::ostream &stream)
Definition: ansiescapecodes.h:100
CppUtilities::EscapeCodes::Phrases
Phrases
The Phrases enum contains standard phrases which can be printed to any std::ostream.
Definition: ansiescapecodes.h:137
CppUtilities::EscapeCodes::phraseString
CPP_UTILITIES_EXPORT std::string_view phraseString(Phrases phrase)
Definition: ansiescapecodes.cpp:117
CppUtilities::EscapeCodes::Color::Black
@ Black
CppUtilities::EscapeCodes::operator<<
std::ostream & operator<<(std::ostream &stream, TextAttribute displayAttribute)
Definition: ansiescapecodes.h:107
CppUtilities::EscapeCodes::Phrases::Error
@ Error
ansiescapecodes.h
CppUtilities
Contains all utilities provides by the c++utilities library.
Definition: argumentparser.h:17
CppUtilities::EscapeCodes::setStyle
void setStyle(std::ostream &stream, TextAttribute displayAttribute=TextAttribute::Reset)
Definition: ansiescapecodes.h:34
CppUtilities::EscapeCodes::enabled
CPP_UTILITIES_EXPORT bool enabled
Controls whether the functions inside the EscapeCodes namespace actually make use of escape codes.
Definition: ansiescapecodes.cpp:22