From 053689d25d9defe2dd9281d25b8a8c0c15596d04 Mon Sep 17 00:00:00 2001 From: Shikhar Vashistha Date: Mon, 27 Sep 2021 04:59:24 +0000 Subject: [PATCH] Made stringToSeverity(ore robust && Refactored if->swittch --- liblangutil/Exceptions.h | 14 +++++++++++-- liblangutil/SourceReferenceFormatter.cpp | 26 ++++++++++++++++-------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/liblangutil/Exceptions.h b/liblangutil/Exceptions.h index f6833e587..74d506f47 100644 --- a/liblangutil/Exceptions.h +++ b/liblangutil/Exceptions.h @@ -33,6 +33,8 @@ #include #include +#include +#include #include #include #include @@ -242,9 +244,17 @@ public: return "Error"; } - static std::optional stringToSeverity(Severity _severity) + static std::optional stringToSeverity(std::string _severity) { - return _severity ? std::optional{"Error, Warning, Info"} : std::nullopt; + _severity = tolower(_severity); + + _severity = std::regex_replace(_severity, std::regex("^ +| +$|( ) +"), "$1"); + + _severity.erase(_severity.begin(), std::find_if(_severity.begin(), _severity.end(), std::bind1st(std::not_equal_to(), ' '))); + + _severity[0] = toupper(_severity[0]); + + return std::make_optional(_severity).has_value() ? std::optional(_severity).value() : std::nullopt; } static std::string formatErrorSeverityLowercase(Severity _severity) diff --git a/liblangutil/SourceReferenceFormatter.cpp b/liblangutil/SourceReferenceFormatter.cpp index 685f017f7..437e3a1d1 100644 --- a/liblangutil/SourceReferenceFormatter.cpp +++ b/liblangutil/SourceReferenceFormatter.cpp @@ -55,6 +55,13 @@ std::string SourceReferenceFormatter::formatErrorInformation(Error const& _error ); } +enum class Severity//have to define if used in switch +{ + Error, + Warning, + Info +}; + AnsiColorized SourceReferenceFormatter::normalColored() const { return AnsiColorized(m_stream, m_colored, {WHITE}); @@ -181,18 +188,19 @@ void SourceReferenceFormatter::printExceptionInformation(SourceReferenceExtracto // exception header line if (_msg.errorId.has_value()) { - if (_msg.severity == "Error") - errorColored() << " (" << _msg.errorId.value().error << ")"; + switch(stringToSeverity(_msg.severity)) + { + case Severity::Error : errorColored() << " (" << _msg.errorId.value().error << ")"; + break; - else if (_msg.severity == "Warning") - warningColored() << " (" << _msg.errorId.value().error << ")"; + case Severity::Warning : warningColored() << " (" << _msg.errorId.value().error << ")"; + break; - else if (_msg.severity == "Info") - infoColored() << " (" << _msg.errorId.value().error << ")"; + case Severity::Info : infoColored() << " (" << _msg.errorId.value().error << ")"; + break; - else - unknownColored() << " (" << _msg.errorId.value().error << ")"; - } + default : unknownColored() << " (" << _msg.errorId.value().error << ")"; + } printSourceLocation(_msg.primary);