From 50a2e7c44f5112cb9800f496132a7cf1ceb2a0ec Mon Sep 17 00:00:00 2001 From: Michel Juillard Date: Sat, 30 May 2020 19:58:30 +0200 Subject: [PATCH] Add escape codes in NativeStatement and VerbatimStatement writeJsonOutput() method --- src/Statement.cc | 84 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 80 insertions(+), 4 deletions(-) diff --git a/src/Statement.cc b/src/Statement.cc index 6dbb996d..4e7afa1b 100644 --- a/src/Statement.cc +++ b/src/Statement.cc @@ -61,8 +61,46 @@ void NativeStatement::writeJsonOutput(ostream &output) const { output << R"({"statementName": "native")" - << R"(, "string": ")" << native_statement << R"(")" - << "}"; + << R"(, "string": ")"; + + // A similar code is in VerbatimStatement::writeJsonOutput() + for (auto ch : native_statement) + switch (ch) + { + case '\b': + output << R"(\b)"; + break; + + case '\f': + output << R"(\f)"; + break; + + case '\n': + output << R"(\n)"; + break; + + case '\r': + output << R"(\r)"; + break; + + case '\t': + output << R"(\t)"; + break; + + case '"': + output << R"(\")"; + break; + + case '\\': + output << R"(\\)"; + break; + + default: + output << ch; + break; + } + + output << R"("})"; } VerbatimStatement::VerbatimStatement(string verbatim_statement_arg) : @@ -80,8 +118,46 @@ void VerbatimStatement::writeJsonOutput(ostream &output) const { output << R"({"statementName": "verbatim")" - << R"(, "string": ")" << verbatim_statement << R"(")" - << "}"; + << R"(, "string": ")"; + + // A similar code is in NativeStatement::writeJsonOutput() + for (auto ch : verbatim_statement) + switch (ch) + { + case '\b': + output << R"(\b)"; + break; + + case '\f': + output << R"(\f)"; + break; + + case '\n': + output << R"(\n)"; + break; + + case '\r': + output << R"(\r)"; + break; + + case '\t': + output << R"(\t)"; + break; + + case '"': + output << R"(\")"; + break; + + case '\\': + output << R"(\\)"; + break; + + default: + output << ch; + break; + } + + output << R"("})"; } void