From d79c86ebb53e862184fed8c096369f4c5c330c55 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 25 May 2014 14:22:19 -0400 Subject: [PATCH] Eval MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ::dump method now colorizeѕ tokens according to a map. --- src/Eval.cpp | 52 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/src/Eval.cpp b/src/Eval.cpp index 7597c03fc..39a028c6e 100644 --- a/src/Eval.cpp +++ b/src/Eval.cpp @@ -25,8 +25,10 @@ //////////////////////////////////////////////////////////////////////////////// #include +#include #include #include +#include #include extern Context context; @@ -858,6 +860,28 @@ bool Eval::identifyOperator ( std::string Eval::dump ( std::vector >& tokens) const { + // Set up a color mapping. + std::map color_map; + color_map[Lexer::typeNone] = Color ("color15 on gray4"); + color_map[Lexer::typeOperator] = Color ("green on gray4"); +/* + Lexer::typeOperator + Lexer::typeNone + Lexer::typeString + Lexer::typeIdentifier + Lexer::typeIdentifierEscape + Lexer::typeEscape + Lexer::typeEscapeHex + Lexer::typeEscapeUnicode + Lexer::typeNumber + Lexer::typeDecimal + Lexer::typeExponentIndicator + Lexer::typeExponent + Lexer::typeHex + Lexer::typeDate + Lexer::typeDuration +*/ + std::string output; std::vector >::const_iterator i; for (i = tokens.begin (); i != tokens.end (); ++i) @@ -865,29 +889,13 @@ std::string Eval::dump ( if (i != tokens.begin ()) output += ' '; - switch (i->second) - { - case Lexer::typeOperator: - output += i->first; - break; + Color c; + if (color_map[i->second].nontrivial ()) + c = color_map[i->second]; + else + c = color_map[Lexer::typeNone]; - case Lexer::typeNone: - case Lexer::typeString: - case Lexer::typeIdentifier: - case Lexer::typeIdentifierEscape: - case Lexer::typeEscape: - case Lexer::typeEscapeHex: - case Lexer::typeEscapeUnicode: - case Lexer::typeNumber: - case Lexer::typeDecimal: - case Lexer::typeExponentIndicator: - case Lexer::typeExponent: - case Lexer::typeHex: - case Lexer::typeDate: - case Lexer::typeDuration: - output += i->first; - break; - } + output += c.colorize (i->first); } return output;