mirror of
https://github.com/RGBCube/serenity
synced 2025-05-14 08:34:57 +00:00
AK: Add a try variant of StringBuilder::append_escaped_for_json
This will allow us to make a fallible version of the JSON serializers.
This commit is contained in:
parent
7440b632fe
commit
9da8c78133
2 changed files with 14 additions and 7 deletions
|
@ -171,31 +171,37 @@ void StringBuilder::append_as_lowercase(char ch)
|
|||
}
|
||||
|
||||
void StringBuilder::append_escaped_for_json(StringView string)
|
||||
{
|
||||
MUST(try_append_escaped_for_json(string));
|
||||
}
|
||||
|
||||
ErrorOr<void> StringBuilder::try_append_escaped_for_json(StringView string)
|
||||
{
|
||||
for (auto ch : string) {
|
||||
switch (ch) {
|
||||
case '\b':
|
||||
append("\\b");
|
||||
TRY(try_append("\\b"));
|
||||
break;
|
||||
case '\n':
|
||||
append("\\n");
|
||||
TRY(try_append("\\n"));
|
||||
break;
|
||||
case '\t':
|
||||
append("\\t");
|
||||
TRY(try_append("\\t"));
|
||||
break;
|
||||
case '\"':
|
||||
append("\\\"");
|
||||
TRY(try_append("\\\""));
|
||||
break;
|
||||
case '\\':
|
||||
append("\\\\");
|
||||
TRY(try_append("\\\\"));
|
||||
break;
|
||||
default:
|
||||
if (ch >= 0 && ch <= 0x1f)
|
||||
appendff("\\u{:04x}", ch);
|
||||
TRY(try_appendff("\\u{:04x}", ch));
|
||||
else
|
||||
append(ch);
|
||||
TRY(try_append(ch));
|
||||
}
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue