Skip to content

Commit 3c34b59

Browse files
authored
Escape control chars in keys (#45)
1 parent 73c2da1 commit 3c34b59

File tree

10 files changed

+13
-16
lines changed

10 files changed

+13
-16
lines changed

src/hjson_encode.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -232,14 +232,11 @@ static void _quote(Encoder *e, const std::string& value, const char *separator,
232232
static void _quoteName(Encoder *e, const std::string& name) {
233233
if (name.empty()) {
234234
*e->os << "\"\"";
235-
} else if (e->opt.quoteKeys || std::regex_search(name, e->needsEscapeName)) {
235+
} else if (e->opt.quoteKeys || std::regex_search(name, e->needsEscapeName) ||
236+
std::regex_search(name, e->needsEscape))
237+
{
236238
*e->os << '"';
237-
if (std::regex_search(name, e->needsEscape)) {
238-
_quoteReplace(e, name);
239-
} else {
240-
*e->os << name;
241-
}
242-
239+
_quoteReplace(e, name);
243240
*e->os << '"';
244241
} else {
245242
// without quotes

test/assets/charset2_result.hjson

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
uescape: "\u0000,\u0001,\uffff"
3-
umlaut: äöüßÄÖÜ
3+
"um\u000blaut": äöüßÄÖÜ
44
hex: ģ䕧覫췯ꯍ
55
}

test/assets/charset2_result.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"uescape": "\u0000,\u0001,\uffff",
3-
"umlaut": "äöüßÄÖÜ",
3+
"um\u000blaut": "äöüßÄÖÜ",
44
"hex": "ģ䕧覫췯ꯍ"
55
}

test/assets/charset2_test.hjson

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
uescape: "\u0000,\u0001,\uffff"
3-
umlaut: äöüßÄÖÜ
3+
"um\u000blaut": äöüßÄÖÜ
44
hex: "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A"
55
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
uescape: "\u0000,\u0001,\uffff"
3-
umlaut: äöüßÄÖÜ
3+
"um\u000blaut": äöüßÄÖÜ
44
hex: ģ䕧覫췯ꯍ
55
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
uescape: "\u0000,\u0001,\uffff"
3-
umlaut: äöüßÄÖÜ
3+
"um\u000blaut": äöüßÄÖÜ
44
hex: ģ䕧覫췯ꯍ
55
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
uescape: "\u0000,\u0001,\uffff"
3-
umlaut: äöüßÄÖÜ
3+
"um\u000blaut": äöüßÄÖÜ
44
hex: ģ䕧覫췯ꯍ
55
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
hex: ģ䕧覫췯ꯍ
33
uescape: "\u0000,\u0001,\uffff"
4-
umlaut: äöüßÄÖÜ
4+
"um\u000blaut": äöüßÄÖÜ
55
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"hex": "ģ䕧覫췯ꯍ",
33
"uescape": "\u0000,\u0001,\uffff",
4-
"umlaut": "äöüßÄÖÜ"
4+
"um\u000blaut": "äöüßÄÖÜ"
55
}

test/assets/testlist.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ pass1_test.json
7979
pass2_test.json
8080
pass3_test.json
8181
pass4_test.json
82-
pass5_test.json
82+
pass5_test.hjson
8383
pass6_test.hjson
8484
passSingle_test.hjson
8585
root_test.hjson

0 commit comments

Comments
 (0)