-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathJsonDemoCLI.ls
93 lines (76 loc) · 3.17 KB
/
JsonDemoCLI.ls
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package
{
import system.application.ConsoleApplication;
import pixeldroid.json.Json;
import pixeldroid.json.JsonPrinter;
import pixeldroid.json.JsonPrinterOptions;
import pixeldroid.json.YamlPrinter;
import pixeldroid.json.YamlPrinterOptions;
public class JsonDemoCLI extends ConsoleApplication
{
override public function run():void
{
var jsonObject:Dictionary.<String,Object> = {
'nulls': "loom dictionaries delete null values",
'bool': true,
'number': 987.6543,
'string-simple': "aA bB cC",
'string-escapes': "\'single quote,\'\n\"double quote\non two lines\"",
'array': [1, [23, 45], [67, [666], [777], 89]],
'dictionary': { 'a': [65, 97], 'z': { 'A': 65, 'a': 97 } }
};
trace('\nsource:\n' +objectToString(jsonObject));
var j:Json = Json.fromObject(jsonObject);
printJson(j);
printYaml(j);
}
private function printJson(j:Json):void
{
trace('\njson');
trace('\nstandard:\n' +JsonPrinter.print(j, JsonPrinterOptions.standard));
trace('\ncompact:\n' +JsonPrinter.print(j, JsonPrinterOptions.compact));
trace('\nminified:\n' +JsonPrinter.print(j, JsonPrinterOptions.minified));
}
private function printYaml(j:Json):void
{
trace('\nyaml');
trace('\nstandard:\n' +YamlPrinter.print(j, YamlPrinterOptions.standard));
trace('\ncompact:\n' +YamlPrinter.print(j, YamlPrinterOptions.compact));
var opts:YamlPrinterOptions = new YamlPrinterOptions();
opts.printDocumentEnd = true;
opts.tabSize = 4;
opts.tightLists = true;
trace('\ncustom:\n' +YamlPrinter.print(j, opts));
}
private function objectToString(o:Object):String
{
// this simplified implementation assumes dictionaries are <String,Object> tuples
var s:String;
switch (o.getFullTypeName())
{
case 'system.Null' : s = 'null'; break;
case 'system.Boolean' : s = o.toString(); break;
case 'system.Number' : s = o.toString(); break;
case 'system.String' : s = '"' + o.toString() + '"'; break;
case 'system.Vector' : s = vectorToString(o as Vector.<Object>); break;
case 'system.Dictionary' : s = dictionaryToString(o as Dictionary.<String,Object>); break;
default: s = o.toString();
}
return s;
}
private function dictionaryToString(d:Dictionary.<String,Object>):String
{
var l:Vector.<String> = [];
for (var k:String in d)
l.push('"' +k +'": ' +objectToString(d[k]));
return '{ ' +l.join(', ') +' }';
}
private function vectorToString(v:Vector.<Object>):String
{
var l:Vector.<String> = [];
for each(var o:Object in v)
l.push(objectToString(o));
return '[ ' +l.join(', ') +' ]';
}
}
}