diff options
| author | Jean Boussier <jean.boussier@gmail.com> | 2020-01-30 12:48:05 +0100 |
|---|---|---|
| committer | Jean Boussier <jean.boussier@gmail.com> | 2020-07-04 12:14:47 +0200 |
| commit | 8a18cf6a14fc1fae54b3d581434a255c9d98ceea (patch) | |
| tree | 059a4f393a91df8506b4212e5158282fe1b07402 /java/src/json/ext/StringEncoder.java | |
| parent | 617428650d48db8a4b5439968e441f859605c6f3 (diff) | |
| download | json-8a18cf6a14fc1fae54b3d581434a255c9d98ceea.tar.gz | |
Add an option to escape forward slash character
Squashed commit of the following:
commit 26d181059989279a79c433cedcd893b4f52e42ee
Author: Francois Chagnon <francois.chagnon@jadedpixel.com>
Date: Tue Sep 15 21:17:34 2015 +0000
add config options for escape_slash
commit fa282334051b16df91ca097dd7304b46f3bc7719
Author: Francois Chagnon <francois.chagnon@jadedpixel.com>
Date: Mon Feb 9 21:09:33 2015 +0000
add forward slash to escape character
Diffstat (limited to 'java/src/json/ext/StringEncoder.java')
| -rw-r--r-- | java/src/json/ext/StringEncoder.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/java/src/json/ext/StringEncoder.java b/java/src/json/ext/StringEncoder.java index 9d40dd3..26678ed 100644 --- a/java/src/json/ext/StringEncoder.java +++ b/java/src/json/ext/StringEncoder.java @@ -15,7 +15,7 @@ import org.jruby.util.ByteList; * and throws a GeneratorError if any problem is found. */ final class StringEncoder extends ByteListTranscoder { - private final boolean asciiOnly; + private final boolean asciiOnly, escapeSlash; // Escaped characters will reuse this array, to avoid new allocations // or appending them byte-by-byte @@ -37,9 +37,10 @@ final class StringEncoder extends ByteListTranscoder { new byte[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; - StringEncoder(ThreadContext context, boolean asciiOnly) { + StringEncoder(ThreadContext context, boolean asciiOnly, boolean escapeSlash) { super(context); this.asciiOnly = asciiOnly; + this.escapeSlash = escapeSlash; } void encode(ByteList src, ByteList out) { @@ -73,6 +74,11 @@ final class StringEncoder extends ByteListTranscoder { case '\b': escapeChar('b'); break; + case '/': + if(escapeSlash) { + escapeChar((char)c); + break; + } default: if (c >= 0x20 && c <= 0x7f || (c >= 0x80 && !asciiOnly)) { |
