Add escape codes in NativeStatement and VerbatimStatement writeJsonOutput() method

issue#70
Michel Juillard 2020-05-30 19:58:30 +02:00 committed by Sébastien Villemot
parent fba113d82b
commit 50a2e7c44f
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
1 changed files with 80 additions and 4 deletions

View File

@ -61,8 +61,46 @@ void
NativeStatement::writeJsonOutput(ostream &output) const NativeStatement::writeJsonOutput(ostream &output) const
{ {
output << R"({"statementName": "native")" 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) : VerbatimStatement::VerbatimStatement(string verbatim_statement_arg) :
@ -80,8 +118,46 @@ void
VerbatimStatement::writeJsonOutput(ostream &output) const VerbatimStatement::writeJsonOutput(ostream &output) const
{ {
output << R"({"statementName": "verbatim")" 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 void