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
{
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