C++ Utilities  5.10.5
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:
38  stream << "Error: ";
41  break;
42  case Phrases::Warning:
44  stream << "Warning: ";
47  break;
48  case Phrases::End:
50  stream << '\n';
51  break;
53  stream << " ";
56  break;
59  stream << "==> ";
62  break;
65  stream << " -> ";
68  break;
71  stream << "==> ERROR: ";
74  break;
77  stream << "==> WARNING: ";
80  break;
81  case Phrases::EndFlush:
83  stream << std::endl;
84  break;
85  case Phrases::Info:
87  stream << "Info: ";
90  break;
91  case Phrases::Override:
92  eraseLine(stream);
93  stream << '\r';
94  break;
95  case Phrases::SubError:
97  stream << " -> ERROR: ";
100  break;
101  case Phrases::SubWarning:
103  stream << " -> WARNING: ";
105  setStyle(stream, TextAttribute::Bold);
106  break;
109  stream << "==> ";
111  setStyle(stream, TextAttribute::Bold);
112  break;
113  }
114  return stream;
115 }
116 
120 std::string_view phraseString(Phrases phrase)
121 {
122  using namespace std::string_view_literals;
123  switch (phrase) {
124  case Phrases::Error:
125  return "Error: "sv;
126  case Phrases::Warning:
127  return "Warning: "sv;
129  return " "sv;
131  return "==> "sv;
132  case Phrases::SubMessage:
133  return " -> "sv;
135  return "==> ERROR: "sv;
137  return "==> WARNING: ";
138  case Phrases::Info:
139  return "Info: "sv;
140  case Phrases::SubError:
141  return " -> ERROR: "sv;
142  case Phrases::SubWarning:
143  return " -> WARNING: "sv;
145  return "==> "sv;
146  case Phrases::End:
147  case Phrases::EndFlush:
148  return "\n";
149  default:
150  return std::string_view{};
151  }
152 }
153 
159 std::string_view formattedPhraseString(Phrases phrase)
160 {
161  if (!enabled) {
162  return phraseString(phrase);
163  }
164  using namespace std::string_view_literals;
165  switch (phrase) {
166  case Phrases::Error:
167  return "\e[1;31mError: \e[0m\e[1m"sv;
168  case Phrases::Warning:
169  return "\e[1;33mWarning: \e[0m\e[1m"sv;
171  return " \e[0m\e[1m"sv;
173  return "\e[1;32m==> \e[0m\e[1m"sv;
174  case Phrases::SubMessage:
175  return "\e[1;32m -> \e[0m\e[1m"sv;
177  return "\e[1;31m==> ERROR: \e[0m\e[1m"sv;
179  return "\e[1;33m==> WARNING: \e[0m\e[1m";
180  case Phrases::Info:
181  return "\e[1;34mInfo: \e[0m\e[1m"sv;
182  case Phrases::SubError:
183  return "\e[1;31m -> ERROR: \e[0m\e[1m"sv;
184  case Phrases::SubWarning:
185  return "\e[1;33m -> WARNING: \e[0m\e[1m"sv;
187  return "\e[1;37m==> \e[0m\e[1m"sv;
188  case Phrases::End:
189  case Phrases::EndFlush:
190  return "\e[0m\n";
191  default:
192  return std::string_view{};
193  }
194 }
195 
196 } // namespace EscapeCodes
197 
198 } // namespace CppUtilities
CPP_UTILITIES_EXPORT std::string_view phraseString(Phrases phrase)
Returns a string for the specified phrase without formatting.
void eraseLine(std::ostream &stream)
CPP_UTILITIES_EXPORT bool enabled
Controls whether the functions inside the EscapeCodes namespace actually make use of escape codes.
void setStyle(std::ostream &stream, TextAttribute displayAttribute=TextAttribute::Reset)
CPP_UTILITIES_EXPORT std::string_view formattedPhraseString(Phrases phrase)
Returns a string for the specified phrase which is formatted using ANSI escape codes.
std::ostream & operator<<(std::ostream &stream, TextAttribute displayAttribute)
Phrases
The Phrases enum contains standard phrases which can be printed to any std::ostream and obtained as s...
Contains all utilities provides by the c++utilities library.