Mercurial > pub > ImplabNet
comparison Implab/JSON/JSONWriter.cs @ 119:2573b562e328 v2
Promises rewritten, added improved version of AsyncQueue
author | cin |
---|---|
date | Sun, 11 Jan 2015 19:13:02 +0300 |
parents | e046a94eecb1 |
children | 0fa293bb1351 |
comparison
equal
deleted
inserted
replaced
118:e046a94eecb1 | 119:2573b562e328 |
---|---|
1 using System; | 1 using System; |
2 using System.Collections.Generic; | 2 using System.Collections.Generic; |
3 using System.IO; | 3 using System.IO; |
4 using System.Linq; | |
5 using System.Text; | |
6 using System.Threading.Tasks; | |
7 | 4 |
8 namespace Implab.JSON { | 5 namespace Implab.JSON { |
9 public class JSONWriter { | 6 public class JSONWriter { |
10 struct Context { | 7 struct Context { |
11 public bool needComma; | 8 public bool needComma; |
21 static readonly char [] _escapeBKS, | 18 static readonly char [] _escapeBKS, |
22 _escapeFWD, | 19 _escapeFWD, |
23 _escapeCR, | 20 _escapeCR, |
24 _escapeNL, | 21 _escapeNL, |
25 _escapeTAB, | 22 _escapeTAB, |
26 _escapeSLASH, | |
27 _escapeBSLASH, | 23 _escapeBSLASH, |
28 _escapeQ; | 24 _escapeQ; |
29 | 25 |
30 static JSONWriter() { | 26 static JSONWriter() { |
31 _escapeBKS = "\\b".ToCharArray(); | 27 _escapeBKS = "\\b".ToCharArray(); |
32 _escapeFWD = "\\f".ToCharArray(); | 28 _escapeFWD = "\\f".ToCharArray(); |
33 _escapeCR = "\\r".ToCharArray(); | 29 _escapeCR = "\\r".ToCharArray(); |
34 _escapeNL = "\\n".ToCharArray(); | 30 _escapeNL = "\\n".ToCharArray(); |
35 _escapeTAB = "\\t".ToCharArray(); | 31 _escapeTAB = "\\t".ToCharArray(); |
36 _escapeBSLASH = "\\\\".ToCharArray(); | 32 _escapeBSLASH = "\\\\".ToCharArray(); |
37 _escapeSLASH = "\\/".ToCharArray(); | |
38 _escapeQ = "\\\"".ToCharArray(); | 33 _escapeQ = "\\\"".ToCharArray(); |
39 } | 34 } |
40 | 35 |
41 public JSONWriter(TextWriter writer) { | 36 public JSONWriter(TextWriter writer) { |
42 Safe.ArgumentNotNull(writer, "writer"); | 37 Safe.ArgumentNotNull(writer, "writer"); |
203 } | 198 } |
204 | 199 |
205 var chars = value.ToCharArray(); | 200 var chars = value.ToCharArray(); |
206 m_writer.Write('"'); | 201 m_writer.Write('"'); |
207 | 202 |
203 // Analysis disable once ForCanBeConvertedToForeach | |
208 for (int i = 0; i < chars.Length; i++) { | 204 for (int i = 0; i < chars.Length; i++) { |
209 var ch = chars[i]; | 205 var ch = chars[i]; |
210 | 206 |
211 switch (ch) { | 207 switch (ch) { |
212 case '\b': | 208 case '\b': |