From a03368ad201a0bacce9e69056c36f9db0e689a3b Mon Sep 17 00:00:00 2001 From: dota17 Date: Tue, 30 Jun 2020 11:31:09 +0800 Subject: [PATCH] Support to escape CR (\r) in load/emit --- src/exp.h | 2 +- test/integration/emitter_test.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/exp.h b/src/exp.h index 33c4b7b..0b2b306 100644 --- a/src/exp.h +++ b/src/exp.h @@ -69,7 +69,7 @@ inline const RegEx& Hex() { inline const RegEx& NotPrintable() { static const RegEx e = RegEx(0) | - RegEx("\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x7F", REGEX_OR) | + RegEx("\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x7F", REGEX_OR) | RegEx(0x0E, 0x1F) | (RegEx('\xC2') + (RegEx('\x80', '\x84') | RegEx('\x86', '\x9F'))); return e; diff --git a/test/integration/emitter_test.cpp b/test/integration/emitter_test.cpp index 04adadf..3b13fe3 100644 --- a/test/integration/emitter_test.cpp +++ b/test/integration/emitter_test.cpp @@ -1127,6 +1127,17 @@ TEST_F(EmitterTest, SingleChar) { ExpectEmit("- a\n- \":\"\n- \"\\x10\"\n- \"\\n\"\n- \" \"\n- \"\\t\""); } +TEST_F(EmitterTest, EscapeCarriageReturn) { + out << "aaa\rbbb"; + ExpectEmit("\"aaa\\rbbb\""); +} + +TEST_F(EmitterTest, EscapeCarriageReturnOnNode) { + Node n(Load("\"aaa\rbbb\"")); + out << n; + ExpectEmit("\"aaa\\rbbb\""); +} + TEST_F(EmitterTest, DefaultPrecision) { out << BeginSeq; out << 1.3125f;