-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathextString-jsonToDict.sc
65 lines (65 loc) · 1.49 KB
/
extString-jsonToDict.sc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//+ String {
//
// getQuotedTextIndices {|quoteChar = "\""|
// var quoteIndices;
//
// quoteIndices = this.findAll(quoteChar.asString);
// // remove backquoted chars
// quoteIndices = quoteIndices.select{|idx, i|
// this[idx-1] != $\\
// } ?? {[]};
//
// ^quoteIndices.clump(2);
// }
//
// getUnquotedTextIndices {|quoteChar = "\""|
// ^((([-1] ++ this.getQuotedTextIndices(quoteChar).flatten ++ [this.size]).clump(2)) +.t #[1, -1])
// }
//
// getStructuredTextIndices {
// var unquotedTextIndices;
//
// unquotedTextIndices = this.getUnquotedTextIndices;
// unquotedTextIndices = unquotedTextIndices.collect{|idxs|
// this.copyRange(*idxs).getUnquotedTextIndices($') + idxs.first
// }.flat.clump(2);
//
// ^unquotedTextIndices
// }
//
// prepareForJSonDict {
// var newString = this.deepCopy;
// var idxs, nullIdxs;
// idxs = newString.getStructuredTextIndices;
//
//
// idxs.do{|pairs, i|
// Interval(*pairs).do{|idx|
// (newString[idx] == ${).if({newString[idx] = $(});
// (newString[idx] == $}).if({newString[idx] = $)});
//
// (newString[idx] == $:).if({
// [(idxs[i-1].last)+1, pairs.first-1].do{|quoteIdx|
// newString[quoteIdx] = $'
// }
// });
// }
// };
//
// // replace null with nil
// nullIdxs = newString.findAll("null");
// nullIdxs.do{|idx|
// idxs.any{|pairs| idx.inRange(*pairs)}.if({
// newString.overWrite("nil ", idx);
// })
//
// };
//
// ^newString
// }
//
// jsonToDict {
// ^(this.prepareForJSonDict.interpret)
// }
//
//}