Auto status change to "Under Review"
@@ -1,52 +1,52 | |||||
1 | using Implab; |
|
1 | using Implab; | |
2 | using Implab.Formats; |
|
2 | using Implab.Formats; | |
3 | using System; |
|
3 | using System; | |
4 | using System.Collections.Generic; |
|
4 | using System.Collections.Generic; | |
5 | using System.Diagnostics; |
|
5 | using System.Diagnostics; | |
6 | using System.Linq; |
|
6 | using System.Linq; | |
7 | using System.Text; |
|
7 | using System.Text; | |
8 | using System.Threading.Tasks; |
|
8 | using System.Threading.Tasks; | |
9 |
|
9 | |||
10 | namespace Implab.Formats.JSON { |
|
10 | namespace Implab.Formats.JSON { | |
11 | /// <summary> |
|
11 | /// <summary> | |
12 | /// ΠΠ»Π°ΡΡ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ JSON |
|
12 | /// ΠΠ»Π°ΡΡ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ JSON | |
13 | /// </summary> |
|
13 | /// </summary> | |
14 | static class StringTranslator { |
|
14 | static class StringTranslator { | |
15 | static readonly char[] _escMap; |
|
15 | static readonly char[] _escMap; | |
16 | static readonly int[] _hexMap; |
|
16 | static readonly int[] _hexMap; | |
17 |
|
17 | |||
18 | static StringTranslator() { |
|
18 | static StringTranslator() { | |
19 | var chars = new char[] { 'b', 'f', 't', 'r', 'n', '\\', '/' }; |
|
19 | var chars = new char[] { 'b', 'f', 't', 'r', 'n', '\\', '/', '"' }; | |
20 | var vals = new char[] { '\b', '\f', '\t', '\r', '\n', '\\', '/' }; |
|
20 | var vals = new char[] { '\b', '\f', '\t', '\r', '\n', '\\', '/', '"' }; | |
21 |
|
21 | |||
22 | _escMap = new char[chars.Max() + 1]; |
|
22 | _escMap = new char[chars.Max() + 1]; | |
23 |
|
23 | |||
24 | for (int i = 0; i < chars.Length; i++) |
|
24 | for (int i = 0; i < chars.Length; i++) | |
25 | _escMap[chars[i]] = vals[i]; |
|
25 | _escMap[chars[i]] = vals[i]; | |
26 |
|
26 | |||
27 | var hexs = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F' }; |
|
27 | var hexs = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F' }; | |
28 | var ints = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 10, 11, 12, 13, 14, 15 }; |
|
28 | var ints = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 10, 11, 12, 13, 14, 15 }; | |
29 |
|
29 | |||
30 | _hexMap = new int[hexs.Max() + 1]; |
|
30 | _hexMap = new int[hexs.Max() + 1]; | |
31 |
|
31 | |||
32 | for (int i = 0; i < hexs.Length; i++) |
|
32 | for (int i = 0; i < hexs.Length; i++) | |
33 | _hexMap[hexs[i]] = ints[i]; |
|
33 | _hexMap[hexs[i]] = ints[i]; | |
34 |
|
34 | |||
35 | } |
|
35 | } | |
36 |
|
36 | |||
37 | internal static char TranslateEscapedChar(char symbol) { |
|
37 | internal static char TranslateEscapedChar(char symbol) { | |
38 | return _escMap[symbol]; |
|
38 | return _escMap[symbol]; | |
39 | } |
|
39 | } | |
40 |
|
40 | |||
41 | internal static char TranslateHexUnicode(char[] symbols, int offset) { |
|
41 | internal static char TranslateHexUnicode(char[] symbols, int offset) { | |
42 | Debug.Assert(symbols != null); |
|
42 | Debug.Assert(symbols != null); | |
43 | Debug.Assert(symbols.Length - offset >= 4); |
|
43 | Debug.Assert(symbols.Length - offset >= 4); | |
44 |
|
44 | |||
45 | int value = (_hexMap[symbols[offset]] << 12) |
|
45 | int value = (_hexMap[symbols[offset]] << 12) | |
46 | | (_hexMap[symbols[offset + 1]] << 8) |
|
46 | | (_hexMap[symbols[offset + 1]] << 8) | |
47 | | (_hexMap[symbols[offset + 2]] << 4) |
|
47 | | (_hexMap[symbols[offset + 2]] << 4) | |
48 | | (_hexMap[symbols[offset + 3]]); |
|
48 | | (_hexMap[symbols[offset + 3]]); | |
49 | return (char)value; |
|
49 | return (char)value; | |
50 | } |
|
50 | } | |
51 | } |
|
51 | } | |
52 | } |
|
52 | } |
General Comments 3
ok, latest stable version should be in default
You need to be logged in to leave comments.
Login now