ranger-compiler 2.1.70 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +103 -0
- package/README.md +956 -133
- package/{compiler/Lang.clj → dist/Lang.rgr} +2345 -75
- package/dist/README.md +116 -0
- package/dist/{bin/api.d.ts → api.d.ts} +430 -154
- package/dist/api.js +34345 -0
- package/{lib/Ajax.clj → dist/lib/Ajax.rgr} +1 -1
- package/{lib/CmdParams.clj → dist/lib/CmdParams.rgr} +72 -72
- package/{lib/Crypto.clj → dist/lib/Crypto.rgr} +1 -1
- package/{lib/DOMLib.clj → dist/lib/DOMLib.rgr} +2 -2
- package/{lib/Engine3D.clj → dist/lib/Engine3D.rgr} +1 -1
- package/{lib/ImmutableVector.clj → dist/lib/ImmutableVector.rgr} +364 -364
- package/{lib/IndexedDB.clj → dist/lib/IndexedDB.rgr} +1 -1
- package/{lib/JSON.clj → dist/lib/JSON.rgr} +105 -2
- package/{lib/JinxProcess.clj → dist/lib/JinxProcess.rgr} +3 -3
- package/{lib/Storage.clj → dist/lib/Storage.rgr} +1 -1
- package/{lib/Timers.clj → dist/lib/Timers.rgr} +176 -170
- package/{lib/ViewLib.clj → dist/lib/ViewLib.rgr} +1 -1
- package/dist/lib/lib/ACEEditor.rgr +5 -0
- package/dist/lib/lib/Ajax.rgr +196 -0
- package/dist/lib/lib/CmdParams.rgr +72 -0
- package/dist/lib/lib/Crypto.rgr +90 -0
- package/dist/lib/lib/DOMLib.rgr +307 -0
- package/{examples/3D/Engine3D.clj → dist/lib/lib/Engine3D.rgr} +870 -857
- package/dist/lib/lib/ImmutableVector.rgr +364 -0
- package/dist/lib/lib/IndexedDB.rgr +32 -0
- package/{compiler/JSON.clj → dist/lib/lib/JSON.rgr} +106 -3
- package/dist/lib/lib/JinxProcess.rgr +838 -0
- package/dist/lib/lib/SQL.rgr +44 -0
- package/dist/lib/lib/ServiceLib.rgr +9 -0
- package/dist/lib/lib/Storage.rgr +89 -0
- package/dist/lib/lib/Time.rgr +75 -0
- package/dist/lib/lib/Timers.rgr +176 -0
- package/dist/lib/lib/TypedArrays.rgr +14 -0
- package/dist/lib/lib/ViewLib.rgr +851 -0
- package/dist/lib/lib/WebLib.rgr +47 -0
- package/dist/lib/lib/WebServerLib.rgr +137 -0
- package/{lib/ranger-dir.clj → dist/lib/lib/ranger-dir.rgr} +1 -1
- package/{compiler/stdlib.clj → dist/lib/lib/stdlib.rgr} +42 -19
- package/{lib/stdops.clj → dist/lib/lib/stdops.rgr} +1 -1
- package/dist/lib/ranger-dir.rgr +175 -0
- package/{lib/stdlib.clj → dist/lib/stdlib.rgr} +2 -2
- package/dist/lib/stdops.rgr +168 -0
- package/dist/package.json +47 -0
- package/{compiler/bin/output.js → dist/rgrc.js} +15377 -7936
- package/dist/stdops.rgr +168 -0
- package/package.json +196 -39
- package/adventofcode/day1/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day1/bin/LambdaSignature2.java +0 -3
- package/adventofcode/day1/bin/LambdaSignature3.java +0 -3
- package/adventofcode/day1/bin/day1.cpp +0 -124
- package/adventofcode/day1/bin/day1.go +0 -75
- package/adventofcode/day1/bin/day1.js +0 -45
- package/adventofcode/day1/bin/day1.php +0 -46
- package/adventofcode/day1/bin/day1.scala +0 -48
- package/adventofcode/day1/bin/day1.swift +0 -48
- package/adventofcode/day1/bin/day1_part2.cpp +0 -180
- package/adventofcode/day1/bin/day1_part2.go +0 -123
- package/adventofcode/day1/bin/day1_part2.js +0 -76
- package/adventofcode/day1/bin/day1_part2.php +0 -88
- package/adventofcode/day1/bin/day1_part2.scala +0 -81
- package/adventofcode/day1/bin/day1_part2.swift +0 -91
- package/adventofcode/day1/bin/day_one.java +0 -38
- package/adventofcode/day1/bin/day_one_part_two.java +0 -57
- package/adventofcode/day1/bin/operatorsOf.java +0 -37
- package/adventofcode/day1/bin/operatorsOf_5.java +0 -10
- package/adventofcode/day1/bin/operatorsOfboolean_5.java +0 -10
- package/adventofcode/day1/bin/variant.hpp +0 -2416
- package/adventofcode/day1/compile.bat +0 -7
- package/adventofcode/day1/compile2.bat +0 -7
- package/adventofcode/day1/day1.clj +0 -19
- package/adventofcode/day1/day1_part2.clj +0 -43
- package/adventofcode/day1/input1.txt +0 -1
- package/adventofcode/day2/bin/LambdaSignature1.class +0 -0
- package/adventofcode/day2/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day2/bin/LambdaSignature2.class +0 -0
- package/adventofcode/day2/bin/LambdaSignature2.java +0 -3
- package/adventofcode/day2/bin/day2.cpp +0 -133
- package/adventofcode/day2/bin/day2.go +0 -85
- package/adventofcode/day2/bin/day2.js +0 -45
- package/adventofcode/day2/bin/day2.php +0 -59
- package/adventofcode/day2/bin/day2.scala +0 -54
- package/adventofcode/day2/bin/day2.swift +0 -62
- package/adventofcode/day2/bin/day2_part2.cpp +0 -150
- package/adventofcode/day2/bin/day2_part2.go +0 -101
- package/adventofcode/day2/bin/day2_part2.js +0 -54
- package/adventofcode/day2/bin/day2_part2.php +0 -80
- package/adventofcode/day2/bin/day2_part2.scala +0 -68
- package/adventofcode/day2/bin/day2_part2.swift +0 -82
- package/adventofcode/day2/bin/day_two.java +0 -61
- package/adventofcode/day2/bin/day_two_part_two$1$1$1.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two$1$1.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two$1.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two.class +0 -0
- package/adventofcode/day2/bin/day_two_part_two.java +0 -80
- package/adventofcode/day2/bin/operatorsOf.class +0 -0
- package/adventofcode/day2/bin/operatorsOf.java +0 -18
- package/adventofcode/day2/bin/variant.hpp +0 -2416
- package/adventofcode/day2/compile.bat +0 -7
- package/adventofcode/day2/compile2.bat +0 -7
- package/adventofcode/day2/day2.clj +0 -60
- package/adventofcode/day2/day2_part2.clj +0 -69
- package/adventofcode/day2/input1.txt +0 -1
- package/adventofcode/day3/bin/Grid.java +0 -92
- package/adventofcode/day3/bin/GridRow.java +0 -5
- package/adventofcode/day3/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day3/bin/LambdaSignature2.java +0 -3
- package/adventofcode/day3/bin/LambdaSignature3.java +0 -3
- package/adventofcode/day3/bin/day3.cpp +0 -64
- package/adventofcode/day3/bin/day3.go +0 -55
- package/adventofcode/day3/bin/day3.js +0 -42
- package/adventofcode/day3/bin/day3.php +0 -41
- package/adventofcode/day3/bin/day3.scala +0 -52
- package/adventofcode/day3/bin/day3.swift +0 -43
- package/adventofcode/day3/bin/day3_part2.cpp +0 -216
- package/adventofcode/day3/bin/day3_part2.go +0 -188
- package/adventofcode/day3/bin/day3_part2.js +0 -123
- package/adventofcode/day3/bin/day3_part2.php +0 -135
- package/adventofcode/day3/bin/day3_part2.swift +0 -131
- package/adventofcode/day3/bin/day_three_part_two.java +0 -43
- package/adventofcode/day3/bin/day_two.java +0 -42
- package/adventofcode/day3/bin/operatorsOf.java +0 -14
- package/adventofcode/day3/bin/variant.hpp +0 -2416
- package/adventofcode/day3/compile.bat +0 -7
- package/adventofcode/day3/compile2.bat +0 -7
- package/adventofcode/day3/day3.clj +0 -42
- package/adventofcode/day3/day3_part2.clj +0 -112
- package/adventofcode/day4/bin/LambdaSignature1.java +0 -3
- package/adventofcode/day4/bin/day4.cpp +0 -118
- package/adventofcode/day4/bin/day4.go +0 -75
- package/adventofcode/day4/bin/day4.js +0 -40
- package/adventofcode/day4/bin/day4.php +0 -52
- package/adventofcode/day4/bin/day4.scala +0 -47
- package/adventofcode/day4/bin/day4.swift +0 -56
- package/adventofcode/day4/bin/day4_part2.go +0 -129
- package/adventofcode/day4/bin/day4_part2.js +0 -72
- package/adventofcode/day4/bin/day_four.java +0 -41
- package/adventofcode/day4/bin/inputData.java +0 -7
- package/adventofcode/day4/bin/operatorsOf.java +0 -11
- package/adventofcode/day4/bin/variant.hpp +0 -2416
- package/adventofcode/day4/compile.bat +0 -7
- package/adventofcode/day4/compile2.bat +0 -7
- package/adventofcode/day4/day4.clj +0 -32
- package/adventofcode/day4/day4_part2.clj +0 -44
- package/adventofcode/day4/input.clj +0 -519
- package/adventofcode/day4/input.txt +0 -512
- package/bin/api.ts +0 -24471
- package/bin/compiler.ts +0 -24482
- package/bin/output.js +0 -23819
- package/compiler/ColorConsole.clj +0 -22
- package/compiler/ContextOperators.clj +0 -75
- package/compiler/FlowEnterVarDef.clj +0 -223
- package/compiler/InputFileSystem.clj +0 -276
- package/compiler/RangerDocs.clj +0 -7
- package/compiler/TFactory.clj +0 -146
- package/compiler/TFiles.clj +0 -23
- package/compiler/TFlow.clj +0 -39
- package/compiler/TNodeFactory.clj +0 -84
- package/compiler/TTypes.clj +0 -188
- package/compiler/VirtualCompiler.clj +0 -807
- package/compiler/bin/ng_Compiler.js +0 -23779
- package/compiler/commonmark_plugin.clj +0 -359
- package/compiler/feat2.bat +0 -2
- package/compiler/feats.bat +0 -9
- package/compiler/feature_tests.clj +0 -192
- package/compiler/index.js +0 -2
- package/compiler/issue_57.clj +0 -25
- package/compiler/makefile_plugin.clj +0 -135
- package/compiler/markdown_plugin.clj +0 -386
- package/compiler/maven_plugin.clj +0 -162
- package/compiler/ng_AndroidPageWriter.clj +0 -299
- package/compiler/ng_CodeNode.clj +0 -756
- package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
- package/compiler/ng_Compiler.clj +0 -49
- package/compiler/ng_CompilerGeneric.clj +0 -260
- package/compiler/ng_CompilerOrig.clj +0 -854
- package/compiler/ng_DictNode.clj +0 -346
- package/compiler/ng_DictNode2.clj +0 -316
- package/compiler/ng_Execute.clj +0 -138
- package/compiler/ng_Execute1.clj +0 -129
- package/compiler/ng_FlowWork.clj +0 -3951
- package/compiler/ng_LiveCompiler.clj +0 -1109
- package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
- package/compiler/ng_RangerActiveOperators.clj +0 -86
- package/compiler/ng_RangerAppClassDesc.clj +0 -400
- package/compiler/ng_RangerAppEnums.clj +0 -86
- package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
- package/compiler/ng_RangerAppMessages.clj +0 -15
- package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
- package/compiler/ng_RangerAppParamDesc.clj +0 -388
- package/compiler/ng_RangerAppWriterContext.clj +0 -1793
- package/compiler/ng_RangerArgMatch.clj +0 -638
- package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
- package/compiler/ng_RangerCppClassWriter.clj +0 -1023
- package/compiler/ng_RangerDocGenerator.clj +0 -305
- package/compiler/ng_RangerFlowParser.clj +0 -4992
- package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
- package/compiler/ng_RangerGenericClassWriter.clj +0 -573
- package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
- package/compiler/ng_RangerImmutableExtension.clj +0 -77
- package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
- package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1040
- package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
- package/compiler/ng_RangerLanguageWriters.clj +0 -14
- package/compiler/ng_RangerLispParser.clj +0 -873
- package/compiler/ng_RangerPHPClassWriter.clj +0 -643
- package/compiler/ng_RangerPlugin.clj +0 -41
- package/compiler/ng_RangerRangerClassWriter.clj +0 -357
- package/compiler/ng_RangerRustClassWriter.clj +0 -420
- package/compiler/ng_RangerScalaClassWriter.clj +0 -818
- package/compiler/ng_RangerSerializeClass.clj +0 -502
- package/compiler/ng_RangerServiceBuilder.clj +0 -63
- package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
- package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
- package/compiler/ng_RangerTypeClass.clj +0 -45
- package/compiler/ng_SourceParser.clj +0 -241
- package/compiler/ng_SourceParser2.clj +0 -214
- package/compiler/ng_WebPageWriter.clj +0 -39
- package/compiler/ng_jsonParser.clj +0 -340
- package/compiler/ng_p_test.clj +0 -1711
- package/compiler/ng_parser.clj +0 -911
- package/compiler/ng_parser2.clj +0 -735
- package/compiler/ng_parser2_backup.clj +0 -1679
- package/compiler/ng_parser_backup.clj +0 -886
- package/compiler/ng_parser_ok.clj +0 -1718
- package/compiler/ng_parser_ok2.clj +0 -1717
- package/compiler/ng_parser_std_match.clj +0 -687
- package/compiler/ng_parser_std_match2.clj +0 -1012
- package/compiler/ng_parser_v2.clj +0 -1251
- package/compiler/ng_ui.clj +0 -403
- package/compiler/ng_ui_test.clj +0 -18
- package/compiler/ng_writer.clj +0 -338
- package/compiler/ng_xmlParser.clj +0 -472
- package/compiler/ng_xmlParser2.clj +0 -317
- package/compiler/ng_xmlParser3.clj +0 -251
- package/compiler/opdoc.bat +0 -4
- package/compiler/operators.md +0 -290
- package/compiler/p.bat +0 -4
- package/compiler/package.json +0 -10
- package/compiler/pcmd.bat +0 -4
- package/compiler/pcmd2.bat +0 -3
- package/compiler/plaintext_plugin.clj +0 -69
- package/compiler/plugin.bat +0 -19
- package/compiler/plugin2.bat +0 -4
- package/compiler/plugin_app.bat +0 -3
- package/compiler/plugin_apps.clj +0 -27
- package/compiler/plugins.bat +0 -10
- package/compiler/reveal_plugin.clj +0 -409
- package/compiler/simplePlugin.clj +0 -780
- package/compiler/t.bat +0 -3
- package/compiler/test_any.clj +0 -43
- package/compiler/test_call.clj +0 -141
- package/compiler/test_chain.clj +0 -79
- package/compiler/test_json.clj +0 -10
- package/compiler/test_lambda.clj +0 -153
- package/compiler/test_pcmd.clj +0 -32
- package/compiler/test_pcmd2.clj +0 -29
- package/compiler/test_plugin.clj +0 -237
- package/compiler/test_readfile.clj +0 -13
- package/compiler/test_reveal.clj +0 -19
- package/compiler/test_slides.clj +0 -312
- package/compiler/test_types.clj +0 -143
- package/compiler/test_types2.clj +0 -49
- package/compiler/test_types3.clj +0 -53
- package/compiler/test_var.clj +0 -40
- package/compiler/tonpm.bat +0 -14
- package/compiler/tonpm2.bat +0 -12
- package/compiler/ui_plugin.clj +0 -507
- package/compiler/ui_plugin2.clj +0 -427
- package/compiler/update-git.bat +0 -3
- package/compiler/vcomp.bat +0 -4
- package/compiler/viewbuilder_Android.clj +0 -176
- package/compiler/viewbuilder_Web.clj +0 -105
- package/dist/bin/api.js +0 -32422
- package/dist/bin/compiler.d.ts +0 -1638
- package/dist/bin/compiler.js +0 -32444
- package/examples/3D/bin/test_3d.js +0 -329
- package/examples/3D/test_3d.clj +0 -385
- package/examples/EVGColor/EVGColor.clj +0 -310
- package/examples/EVGColor/EVGColorContext.clj +0 -176
- package/examples/EVGColor/bin/EVGColor.js +0 -286
- package/examples/EVGColor/bin/minimized.js +0 -286
- package/examples/SVGPath/SVGPath.clj +0 -625
- package/examples/SVGPath/Vec2.clj +0 -103
- package/examples/SVGPath/bin/SVGPath.cpp +0 -887
- package/examples/SVGPath/bin/SVGPath.js +0 -682
- package/examples/SVGPath/bin/SVGPath.ts +0 -711
- package/examples/SVGPath/bin/minimized.js +0 -578
- package/examples/SVGPath/bin/variant.hpp +0 -2416
- package/examples/minification/Vec2.clj +0 -103
- package/examples/minification/bin/minified.js +0 -44
- package/examples/minification/bin/test.js +0 -117
- package/examples/minification/test.clj +0 -13
- package/fiddle/VirtualCompiler.js +0 -23495
- package/fiddle/browser_editor.js +0 -13240
- package/fiddle/compileEnv.js +0 -1
- package/fiddle/compileEnv.json +0 -1
- package/fiddle/lang_data.js +0 -1
- package/index.html +0 -18
- package/native/httpd/HttpTester.clj +0 -33
- package/native/httpd/RangerWebService.clj +0 -81
- package/operators.md +0 -290
- package/tsconfig.json +0 -29
- package/versions/cpp/compiler.cpp +0 -15032
- package/versions/es6/compiler.js +0 -12860
- package/versions/go/compiler.go +0 -21338
- package/versions/java/AfterCodeNode.java +0 -4
- package/versions/java/ClassJoinPoint.java +0 -6
- package/versions/java/CodeFile.java +0 -42
- package/versions/java/CodeFileSystem.java +0 -72
- package/versions/java/CodeNode.java +0 -807
- package/versions/java/CodeSlice.java +0 -13
- package/versions/java/CodeWriter.java +0 -185
- package/versions/java/ColorConsole.java +0 -8
- package/versions/java/CompilerInterface.java +0 -213
- package/versions/java/DictNode.java +0 -353
- package/versions/java/LiveCompiler.java +0 -772
- package/versions/java/NodeEvalState.java +0 -24
- package/versions/java/OpFindResult.java +0 -6
- package/versions/java/RangerAppArrayValue.java +0 -7
- package/versions/java/RangerAppClassDesc.java +0 -217
- package/versions/java/RangerAppEnum.java +0 -14
- package/versions/java/RangerAppFunctionDesc.java +0 -20
- package/versions/java/RangerAppHashValue.java +0 -11
- package/versions/java/RangerAppInterfaceImpl.java +0 -6
- package/versions/java/RangerAppMethodVariants.java +0 -6
- package/versions/java/RangerAppParamDesc.java +0 -321
- package/versions/java/RangerAppTodo.java +0 -6
- package/versions/java/RangerAppValue.java +0 -10
- package/versions/java/RangerAppWriterContext.java +0 -800
- package/versions/java/RangerArgMatch.java +0 -317
- package/versions/java/RangerBackReference.java +0 -7
- package/versions/java/RangerCSharpClassWriter.java +0 -287
- package/versions/java/RangerCompilerMessage.java +0 -9
- package/versions/java/RangerCppClassWriter.java +0 -725
- package/versions/java/RangerFlowParser.java +0 -2142
- package/versions/java/RangerGenericClassWriter.java +0 -367
- package/versions/java/RangerGolangClassWriter.java +0 -1379
- package/versions/java/RangerJava7ClassWriter.java +0 -652
- package/versions/java/RangerJavaScriptClassWriter.java +0 -305
- package/versions/java/RangerKotlinClassWriter.java +0 -380
- package/versions/java/RangerLispParser.java +0 -845
- package/versions/java/RangerNodeValue.java +0 -9
- package/versions/java/RangerPHPClassWriter.java +0 -527
- package/versions/java/RangerParamEventHandler.java +0 -6
- package/versions/java/RangerParamEventList.java +0 -5
- package/versions/java/RangerParamEventMap.java +0 -27
- package/versions/java/RangerRangerClassWriter.java +0 -268
- package/versions/java/RangerRefForce.java +0 -7
- package/versions/java/RangerScalaClassWriter.java +0 -365
- package/versions/java/RangerSerializeClass.java +0 -148
- package/versions/java/RangerSwift3ClassWriter.java +0 -548
- package/versions/java/RangerTypeClass.java +0 -17
- package/versions/java/SourceCode.java +0 -65
- package/versions/php/compiler.php +0 -13830
- package/versions/swift3/compiler.swift +0 -12542
- /package/{lib/ACEEditor.clj → dist/lib/ACEEditor.rgr} +0 -0
- /package/{lib/SQL.clj → dist/lib/SQL.rgr} +0 -0
- /package/{lib/ServiceLib.clj → dist/lib/ServiceLib.rgr} +0 -0
- /package/{lib/Time.clj → dist/lib/Time.rgr} +0 -0
- /package/{lib/TypedArrays.clj → dist/lib/TypedArrays.rgr} +0 -0
- /package/{lib/WebLib.clj → dist/lib/WebLib.rgr} +0 -0
- /package/{lib/WebServerLib.clj → dist/lib/WebServerLib.rgr} +0 -0
package/compiler/ng_DictNode.clj
DELETED
|
@@ -1,346 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
enum DictNodeType {
|
|
3
|
-
NoType
|
|
4
|
-
Double
|
|
5
|
-
Integer
|
|
6
|
-
String
|
|
7
|
-
Boolean
|
|
8
|
-
Array
|
|
9
|
-
Object
|
|
10
|
-
Null
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
class DictNode {
|
|
14
|
-
def is_property:boolean false
|
|
15
|
-
def is_property_value:boolean false
|
|
16
|
-
def vref:string ""
|
|
17
|
-
def value_type:DictNodeType DictNodeType.Object
|
|
18
|
-
def double_value:double 0.0
|
|
19
|
-
def int_value:int 0
|
|
20
|
-
def string_value:string ""
|
|
21
|
-
def boolean_value:boolean false
|
|
22
|
-
def object_value:DictNode
|
|
23
|
-
def children:[DictNode]
|
|
24
|
-
def objects:[string:DictNode]
|
|
25
|
-
def dict_keys:[string]
|
|
26
|
-
fn EncodeString:string (orig_str:string) {
|
|
27
|
-
def encoded_str:string ""
|
|
28
|
-
def str_length:int (strlen orig_str)
|
|
29
|
-
def ii:int 0
|
|
30
|
-
def buff:charbuffer (to_charbuffer orig_str)
|
|
31
|
-
def cb_len:int (length buff)
|
|
32
|
-
while (ii < cb_len) {
|
|
33
|
-
def cc:char (charAt buff ii)
|
|
34
|
-
switch cc {
|
|
35
|
-
case 8 {
|
|
36
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 98))
|
|
37
|
-
}
|
|
38
|
-
case 9 {
|
|
39
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 116))
|
|
40
|
-
}
|
|
41
|
-
case 10 {
|
|
42
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 110))
|
|
43
|
-
}
|
|
44
|
-
case 12 {
|
|
45
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 102))
|
|
46
|
-
}
|
|
47
|
-
case 13 {
|
|
48
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 114))
|
|
49
|
-
}
|
|
50
|
-
case 34 {
|
|
51
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + "\"")
|
|
52
|
-
}
|
|
53
|
-
case 92 {
|
|
54
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 92))
|
|
55
|
-
}
|
|
56
|
-
case 47 {
|
|
57
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 47))
|
|
58
|
-
}
|
|
59
|
-
default {
|
|
60
|
-
encoded_str = (encoded_str + (strfromcode cc))
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
ii = (1 + ii)
|
|
64
|
-
}
|
|
65
|
-
return encoded_str
|
|
66
|
-
}
|
|
67
|
-
sfn createEmptyObject:DictNode () {
|
|
68
|
-
def v:DictNode (new DictNode ())
|
|
69
|
-
v.value_type = DictNodeType.Object
|
|
70
|
-
return v
|
|
71
|
-
}
|
|
72
|
-
fn addString:void (key:string value:string) {
|
|
73
|
-
if (value_type == DictNodeType.Object) {
|
|
74
|
-
def v:DictNode (new DictNode ())
|
|
75
|
-
v.string_value = value
|
|
76
|
-
v.value_type = DictNodeType.String
|
|
77
|
-
v.vref = key
|
|
78
|
-
v.is_property = true
|
|
79
|
-
push dict_keys key
|
|
80
|
-
set objects key v
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
fn addDouble:void (key:string value:double) {
|
|
84
|
-
if (value_type == DictNodeType.Object) {
|
|
85
|
-
def v:DictNode (new DictNode ())
|
|
86
|
-
v.double_value = value
|
|
87
|
-
v.value_type = DictNodeType.Double
|
|
88
|
-
v.vref = key
|
|
89
|
-
v.is_property = true
|
|
90
|
-
push dict_keys key
|
|
91
|
-
set objects key v
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
fn addInt:void (key:string value:int) {
|
|
95
|
-
if (value_type == DictNodeType.Object) {
|
|
96
|
-
def v:DictNode (new DictNode ())
|
|
97
|
-
v.int_value = value
|
|
98
|
-
v.value_type = DictNodeType.Integer
|
|
99
|
-
v.vref = key
|
|
100
|
-
v.is_property = true
|
|
101
|
-
push dict_keys key
|
|
102
|
-
set objects key v
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
fn addBoolean:void (key:string value:boolean) {
|
|
106
|
-
if (value_type == DictNodeType.Object) {
|
|
107
|
-
def v:DictNode (new DictNode ())
|
|
108
|
-
v.boolean_value = value
|
|
109
|
-
v.value_type = DictNodeType.Boolean
|
|
110
|
-
v.vref = key
|
|
111
|
-
v.is_property = true
|
|
112
|
-
push dict_keys key
|
|
113
|
-
set objects key v
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
fn addObject@(optional weak):DictNode (key:string) {
|
|
117
|
-
def v@(lives optional):DictNode
|
|
118
|
-
if (value_type == DictNodeType.Object) {
|
|
119
|
-
def p:DictNode (new DictNode ())
|
|
120
|
-
v = (new DictNode ())
|
|
121
|
-
p.value_type = DictNodeType.Object
|
|
122
|
-
p.vref = key
|
|
123
|
-
p.is_property = true
|
|
124
|
-
v.value_type = DictNodeType.Object
|
|
125
|
-
v.vref = key
|
|
126
|
-
v.is_property_value = true
|
|
127
|
-
p.object_value = v
|
|
128
|
-
push dict_keys key
|
|
129
|
-
set objects key p
|
|
130
|
-
return v
|
|
131
|
-
}
|
|
132
|
-
return v
|
|
133
|
-
}
|
|
134
|
-
fn setObject:void (key:string value@(strong):DictNode) {
|
|
135
|
-
if (value_type == DictNodeType.Object) {
|
|
136
|
-
def p:DictNode (new DictNode ())
|
|
137
|
-
p.value_type = DictNodeType.Object
|
|
138
|
-
p.vref = key
|
|
139
|
-
p.is_property = true
|
|
140
|
-
value.is_property_value = true
|
|
141
|
-
value.vref = key
|
|
142
|
-
p.object_value = value
|
|
143
|
-
push dict_keys key
|
|
144
|
-
set objects key p
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
fn addArray@(optional weak):DictNode (key:string) {
|
|
148
|
-
def v@(lives optional):DictNode
|
|
149
|
-
if (value_type == DictNodeType.Object) {
|
|
150
|
-
v = (new DictNode ())
|
|
151
|
-
v.value_type = DictNodeType.Array
|
|
152
|
-
v.vref = key
|
|
153
|
-
v.is_property = true
|
|
154
|
-
push dict_keys key
|
|
155
|
-
set objects key (unwrap v)
|
|
156
|
-
return v
|
|
157
|
-
}
|
|
158
|
-
return v
|
|
159
|
-
}
|
|
160
|
-
fn push:void (obj@(strong):DictNode) {
|
|
161
|
-
if(value_type == DictNodeType.Array) {
|
|
162
|
-
push children obj
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
fn getDoubleAt:double (index:int) {
|
|
166
|
-
if (index < (array_length children)) {
|
|
167
|
-
def k:DictNode (itemAt children index)
|
|
168
|
-
return k.double_value
|
|
169
|
-
}
|
|
170
|
-
return 0.0
|
|
171
|
-
}
|
|
172
|
-
fn getStringAt:string (index:int) {
|
|
173
|
-
if (index < (array_length children)) {
|
|
174
|
-
def k:DictNode (itemAt children index)
|
|
175
|
-
return k.string_value
|
|
176
|
-
}
|
|
177
|
-
return ""
|
|
178
|
-
}
|
|
179
|
-
fn getIntAt:int (index:int) {
|
|
180
|
-
if (index < (array_length children)) {
|
|
181
|
-
def k:DictNode (itemAt children index)
|
|
182
|
-
return k.int_value
|
|
183
|
-
}
|
|
184
|
-
return 0
|
|
185
|
-
}
|
|
186
|
-
fn getBooleanAt:boolean (index:int) {
|
|
187
|
-
if (index < (array_length children)) {
|
|
188
|
-
def k:DictNode (itemAt children index)
|
|
189
|
-
return k.boolean_value
|
|
190
|
-
}
|
|
191
|
-
return false
|
|
192
|
-
}
|
|
193
|
-
fn getString@(optional):string (key:string) {
|
|
194
|
-
def res@(optional):string
|
|
195
|
-
if (has objects key) {
|
|
196
|
-
def k:DictNode (get objects key)
|
|
197
|
-
res = k.string_value
|
|
198
|
-
}
|
|
199
|
-
return res
|
|
200
|
-
}
|
|
201
|
-
fn getDouble@(optional):double (key:string) {
|
|
202
|
-
def res@(optional):double
|
|
203
|
-
if (has objects key) {
|
|
204
|
-
def k:DictNode (get objects key)
|
|
205
|
-
res = k.double_value
|
|
206
|
-
}
|
|
207
|
-
return res
|
|
208
|
-
}
|
|
209
|
-
fn getInt@(optional):int (key:string) {
|
|
210
|
-
def res@(optional):int
|
|
211
|
-
if (has objects key) {
|
|
212
|
-
def k:DictNode (get objects key)
|
|
213
|
-
res = k.int_value
|
|
214
|
-
}
|
|
215
|
-
return res
|
|
216
|
-
}
|
|
217
|
-
fn getBoolean@(optional):boolean (key:string) {
|
|
218
|
-
def res@(optional):boolean
|
|
219
|
-
if (has objects key) {
|
|
220
|
-
def k:DictNode (get objects key)
|
|
221
|
-
res = k.boolean_value
|
|
222
|
-
}
|
|
223
|
-
return res
|
|
224
|
-
}
|
|
225
|
-
fn getArray@(optional weak):DictNode (key:string) {
|
|
226
|
-
def res@(weak optional):DictNode
|
|
227
|
-
if (has objects key) {
|
|
228
|
-
def obj:DictNode (get objects key)
|
|
229
|
-
if obj.is_property {
|
|
230
|
-
res = obj.object_value
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
return res
|
|
234
|
-
}
|
|
235
|
-
fn getArrayAt@(weak optional):DictNode (index:int) {
|
|
236
|
-
def res@(weak optional):DictNode
|
|
237
|
-
if (index < (array_length children)) {
|
|
238
|
-
res = (itemAt children index)
|
|
239
|
-
}
|
|
240
|
-
return res
|
|
241
|
-
}
|
|
242
|
-
fn getObject@(weak optional):DictNode (key:string) {
|
|
243
|
-
def res@(weak optional):DictNode
|
|
244
|
-
if (has objects key) {
|
|
245
|
-
def obj:DictNode (get objects key)
|
|
246
|
-
if obj.is_property {
|
|
247
|
-
res = obj.object_value
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
return res
|
|
251
|
-
}
|
|
252
|
-
fn getObjectAt@(weak optional):DictNode (index:int) {
|
|
253
|
-
def res@(weak optional):DictNode
|
|
254
|
-
if (index < (array_length children)) {
|
|
255
|
-
res = (itemAt children index)
|
|
256
|
-
}
|
|
257
|
-
return res
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
fn stringify:string () {
|
|
261
|
-
if is_property {
|
|
262
|
-
if (value_type == DictNodeType.Null) {
|
|
263
|
-
return ((("\"" + vref) + "\"") + ":null")
|
|
264
|
-
}
|
|
265
|
-
if (value_type == DictNodeType.Boolean) {
|
|
266
|
-
if boolean_value {
|
|
267
|
-
return (((("\"" + vref) + "\"") + ":") + "true")
|
|
268
|
-
} {
|
|
269
|
-
return (((("\"" + vref) + "\"") + ":") + "false")
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
if (value_type == DictNodeType.Double) {
|
|
273
|
-
return (((("\"" + vref) + "\"") + ":") + double_value)
|
|
274
|
-
}
|
|
275
|
-
if (value_type == DictNodeType.Integer) {
|
|
276
|
-
return (((("\"" + vref) + "\"") + ":") + int_value)
|
|
277
|
-
}
|
|
278
|
-
if (value_type == DictNodeType.String) {
|
|
279
|
-
return (((((("\"" + vref) + "\"") + ":") + "\"") + (this.EncodeString(string_value))) + "\"")
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
} {
|
|
283
|
-
if (value_type == DictNodeType.Null) {
|
|
284
|
-
return "null"
|
|
285
|
-
}
|
|
286
|
-
if (value_type == DictNodeType.Double) {
|
|
287
|
-
return ("" + double_value)
|
|
288
|
-
}
|
|
289
|
-
if (value_type == DictNodeType.Integer) {
|
|
290
|
-
return ("" + int_value)
|
|
291
|
-
}
|
|
292
|
-
if (value_type == DictNodeType.String) {
|
|
293
|
-
return (("\"" + (this.EncodeString(string_value))) + "\"")
|
|
294
|
-
}
|
|
295
|
-
if (value_type == DictNodeType.Boolean) {
|
|
296
|
-
if boolean_value {
|
|
297
|
-
return "true"
|
|
298
|
-
} {
|
|
299
|
-
return "false"
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
if (value_type == DictNodeType.Array) {
|
|
304
|
-
def str:string ""
|
|
305
|
-
if is_property {
|
|
306
|
-
str = ((("\"" + vref) + "\"") + ":[")
|
|
307
|
-
} {
|
|
308
|
-
str = "["
|
|
309
|
-
}
|
|
310
|
-
for children item:DictNode i {
|
|
311
|
-
if (i > 0) {
|
|
312
|
-
str = (str + ",")
|
|
313
|
-
}
|
|
314
|
-
str = (str + (item.stringify()))
|
|
315
|
-
}
|
|
316
|
-
str = (str + "]")
|
|
317
|
-
return str
|
|
318
|
-
}
|
|
319
|
-
if (value_type == DictNodeType.Object) {
|
|
320
|
-
def str:string ""
|
|
321
|
-
if is_property {
|
|
322
|
-
return (((("\"" + vref) + "\"") + ":") + (object_value.stringify()))
|
|
323
|
-
} {
|
|
324
|
-
str = "{"
|
|
325
|
-
for dict_keys key:string i {
|
|
326
|
-
if (i > 0) {
|
|
327
|
-
str = (str + ",")
|
|
328
|
-
}
|
|
329
|
-
def item:DictNode (get objects key)
|
|
330
|
-
str = (str + (item.stringify()))
|
|
331
|
-
}
|
|
332
|
-
str = (str + "}")
|
|
333
|
-
return str
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
return ""
|
|
337
|
-
}
|
|
338
|
-
sfn tester@(main):void () {
|
|
339
|
-
def oo:DictNode (DictNode.createEmptyObject())
|
|
340
|
-
def fb:DictNode (oo.addObject("foobar"))
|
|
341
|
-
fb.addString("key" "Somevalue")
|
|
342
|
-
print (oo.stringify())
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
}
|
|
346
|
-
|
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
Enum DictNodeType:int (
|
|
3
|
-
NoType
|
|
4
|
-
Double
|
|
5
|
-
Integer
|
|
6
|
-
String
|
|
7
|
-
Boolean
|
|
8
|
-
Array
|
|
9
|
-
Object
|
|
10
|
-
Null
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
class DictNode {
|
|
14
|
-
def is_property:boolean false
|
|
15
|
-
def is_property_value:boolean false
|
|
16
|
-
def vref:string ""
|
|
17
|
-
def value_type:DictNodeType DictNodeType.Object
|
|
18
|
-
def double_value:double 0.0
|
|
19
|
-
def int_value:int 0
|
|
20
|
-
def string_value:string ""
|
|
21
|
-
def boolean_value:boolean false
|
|
22
|
-
def object_value:DictNode
|
|
23
|
-
def children:[DictNode]
|
|
24
|
-
def objects:[string:DictNode]
|
|
25
|
-
def keys:[string]
|
|
26
|
-
fn EncodeString:string (orig_str:string) {
|
|
27
|
-
def encoded_str:string ""
|
|
28
|
-
def str_length:int (strlen orig_str)
|
|
29
|
-
def ii:int 0
|
|
30
|
-
def buff:charbuffer (to_charbuffer orig_str)
|
|
31
|
-
def cb_len:int (length buff)
|
|
32
|
-
while (ii < cb_len) {
|
|
33
|
-
def cc:char (charAt buff ii)
|
|
34
|
-
switch cc {
|
|
35
|
-
case 8 {
|
|
36
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 98))
|
|
37
|
-
}
|
|
38
|
-
case 9 {
|
|
39
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 116))
|
|
40
|
-
}
|
|
41
|
-
case 10 {
|
|
42
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 110))
|
|
43
|
-
}
|
|
44
|
-
case 12 {
|
|
45
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 102))
|
|
46
|
-
}
|
|
47
|
-
case 13 {
|
|
48
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 114))
|
|
49
|
-
}
|
|
50
|
-
case 34 {
|
|
51
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + "\"")
|
|
52
|
-
}
|
|
53
|
-
case 92 {
|
|
54
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 92))
|
|
55
|
-
}
|
|
56
|
-
case 47 {
|
|
57
|
-
encoded_str = ((encoded_str + (strfromcode 92)) + (strfromcode 47))
|
|
58
|
-
}
|
|
59
|
-
default {
|
|
60
|
-
encoded_str = (encoded_str + (strfromcode cc))
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
ii = (1 + ii)
|
|
64
|
-
}
|
|
65
|
-
return encoded_str
|
|
66
|
-
}
|
|
67
|
-
sfn createEmptyObject:DictNode () {
|
|
68
|
-
def v:DictNode (new DictNode ())
|
|
69
|
-
v.value_type = DictNodeType.Object
|
|
70
|
-
return v
|
|
71
|
-
}
|
|
72
|
-
sfn tester@(main):void () {
|
|
73
|
-
def oo:DictNode (DictNode.createEmptyObject())
|
|
74
|
-
def fb:DictNode (oo.addObject("foobar"))
|
|
75
|
-
fb.addString("key" "Somevalue")
|
|
76
|
-
print (oo.stringify())
|
|
77
|
-
}
|
|
78
|
-
fn addString:void (key:string value:string) {
|
|
79
|
-
if (value_type == DictNodeType.Object) {
|
|
80
|
-
def v:DictNode (new DictNode ())
|
|
81
|
-
v.string_value = value
|
|
82
|
-
v.value_type = DictNodeType.String
|
|
83
|
-
v.vref = key
|
|
84
|
-
v.is_property = true
|
|
85
|
-
push keys key
|
|
86
|
-
set objects key v
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
fn addDouble:void (key:string value:double) {
|
|
90
|
-
if (value_type == DictNodeType.Object) {
|
|
91
|
-
def v:DictNode (new DictNode ())
|
|
92
|
-
v.double_value = value
|
|
93
|
-
v.value_type = DictNodeType.Double
|
|
94
|
-
v.vref = key
|
|
95
|
-
v.is_property = true
|
|
96
|
-
push keys key
|
|
97
|
-
set objects key v
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
fn addInt:void (key:string value:int) {
|
|
101
|
-
if (value_type == DictNodeType.Object) {
|
|
102
|
-
def v:DictNode (new DictNode ())
|
|
103
|
-
v.int_value = value
|
|
104
|
-
v.value_type = DictNodeType.Integer
|
|
105
|
-
v.vref = key
|
|
106
|
-
v.is_property = true
|
|
107
|
-
push keys key
|
|
108
|
-
set objects key v
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
fn addBoolean:void (key:string value:boolean) {
|
|
112
|
-
if (value_type == DictNodeType.Object) {
|
|
113
|
-
def v:DictNode (new DictNode ())
|
|
114
|
-
v.boolean_value = value
|
|
115
|
-
v.value_type = DictNodeType.Boolean
|
|
116
|
-
v.vref = key
|
|
117
|
-
v.is_property = true
|
|
118
|
-
push keys key
|
|
119
|
-
set objects key v
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
fn addObject@(optional weak):DictNode (key:string) {
|
|
123
|
-
def v@(lives optional):DictNode
|
|
124
|
-
if (value_type == DictNodeType.Object) {
|
|
125
|
-
def p:DictNode (new DictNode ())
|
|
126
|
-
v = (new DictNode ())
|
|
127
|
-
p.value_type = DictNodeType.Object
|
|
128
|
-
p.vref = key
|
|
129
|
-
p.is_property = true
|
|
130
|
-
v.value_type = DictNodeType.Object
|
|
131
|
-
v.vref = key
|
|
132
|
-
v.is_property_value = true
|
|
133
|
-
p.object_value = v
|
|
134
|
-
push keys key
|
|
135
|
-
set objects key p
|
|
136
|
-
return v
|
|
137
|
-
}
|
|
138
|
-
return v
|
|
139
|
-
}
|
|
140
|
-
fn setObject:void (key:string value@(strong):DictNode) {
|
|
141
|
-
if (value_type == DictNodeType.Object) {
|
|
142
|
-
def p:DictNode (new DictNode ())
|
|
143
|
-
p.value_type = DictNodeType.Object
|
|
144
|
-
p.vref = key
|
|
145
|
-
p.is_property = true
|
|
146
|
-
value.is_property_value = true
|
|
147
|
-
value.vref = key
|
|
148
|
-
p.object_value = value
|
|
149
|
-
push keys key
|
|
150
|
-
set objects key p
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
fn addArray@(optional weak):DictNode (key:string) {
|
|
154
|
-
def v@(lives optional):DictNode
|
|
155
|
-
if (value_type == DictNodeType.Object) {
|
|
156
|
-
v = (new DictNode ())
|
|
157
|
-
v.value_type = DictNodeType.Array
|
|
158
|
-
v.vref = key
|
|
159
|
-
v.is_property = true
|
|
160
|
-
push keys key
|
|
161
|
-
set objects key (unwrap v)
|
|
162
|
-
return v
|
|
163
|
-
}
|
|
164
|
-
return v
|
|
165
|
-
}
|
|
166
|
-
fn push:void (obj@(strong):DictNode) {
|
|
167
|
-
if(value_type == DictNodeType.Array) {
|
|
168
|
-
push children obj
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
fn getDoubleAt:double (index:int) {
|
|
173
|
-
if (index < (array_length children)) {
|
|
174
|
-
def k:DictNode (itemAt children index)
|
|
175
|
-
return k.double_value
|
|
176
|
-
}
|
|
177
|
-
return 0.0
|
|
178
|
-
}
|
|
179
|
-
fn getDouble:double (key:string) {
|
|
180
|
-
if (has objects key) {
|
|
181
|
-
def k:DictNode (get objects key)
|
|
182
|
-
return k.double_value
|
|
183
|
-
}
|
|
184
|
-
return 0.0
|
|
185
|
-
}
|
|
186
|
-
fn getStringAt:string (index:int) {
|
|
187
|
-
if (index < (array_length children)) {
|
|
188
|
-
def k:DictNode (itemAt children index)
|
|
189
|
-
return k.string_value
|
|
190
|
-
}
|
|
191
|
-
return ""
|
|
192
|
-
}
|
|
193
|
-
fn getString:string (key:string) {
|
|
194
|
-
if (has objects key) {
|
|
195
|
-
def k:DictNode (get objects key)
|
|
196
|
-
return k.string_value
|
|
197
|
-
}
|
|
198
|
-
return ""
|
|
199
|
-
}
|
|
200
|
-
fn getArray@(optional weak):DictNode (key:string) {
|
|
201
|
-
def toReturn@(optional lives weak):DictNode
|
|
202
|
-
if (has objects key) {
|
|
203
|
-
def obj:DictNode (get objects key)
|
|
204
|
-
if obj.is_property {
|
|
205
|
-
toReturn = obj.object_value
|
|
206
|
-
return toReturn
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
return toReturn
|
|
210
|
-
}
|
|
211
|
-
fn getArrayAt:DictNode (index:int) {
|
|
212
|
-
if (index < (array_length children)) {
|
|
213
|
-
def k:DictNode (itemAt children index)
|
|
214
|
-
return k
|
|
215
|
-
}
|
|
216
|
-
return (new DictNode ())
|
|
217
|
-
}
|
|
218
|
-
fn getObject@(weak):DictNode (key:string) {
|
|
219
|
-
if (has objects key) {
|
|
220
|
-
def obj:DictNode (get objects key)
|
|
221
|
-
if obj.is_property {
|
|
222
|
-
return (unwrap obj.object_value )
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
return (new DictNode ())
|
|
226
|
-
}
|
|
227
|
-
fn getObjectAt:DictNode (index:int) {
|
|
228
|
-
if (index < (array_length children)) {
|
|
229
|
-
def k:DictNode (itemAt children index)
|
|
230
|
-
return k
|
|
231
|
-
}
|
|
232
|
-
return (new DictNode ())
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
fn stringify:string () {
|
|
236
|
-
if is_property {
|
|
237
|
-
if (value_type == DictNodeType.Null) {
|
|
238
|
-
return ((("\"" + vref) + "\"") + ":null")
|
|
239
|
-
}
|
|
240
|
-
if (value_type == DictNodeType.Boolean) {
|
|
241
|
-
if boolean_value {
|
|
242
|
-
return (((("\"" + vref) + "\"") + ":") + "true")
|
|
243
|
-
} {
|
|
244
|
-
return (((("\"" + vref) + "\"") + ":") + "false")
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
if (value_type == DictNodeType.Double) {
|
|
248
|
-
return (((("\"" + vref) + "\"") + ":") + double_value)
|
|
249
|
-
}
|
|
250
|
-
if (value_type == DictNodeType.Integer) {
|
|
251
|
-
return (((("\"" + vref) + "\"") + ":") + int_value)
|
|
252
|
-
}
|
|
253
|
-
if (value_type == DictNodeType.String) {
|
|
254
|
-
return (((((("\"" + vref) + "\"") + ":") + "\"") + (this.EncodeString(string_value))) + "\"")
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
} {
|
|
258
|
-
if (value_type == DictNodeType.Null) {
|
|
259
|
-
return "null"
|
|
260
|
-
}
|
|
261
|
-
if (value_type == DictNodeType.Double) {
|
|
262
|
-
return ("" + double_value)
|
|
263
|
-
}
|
|
264
|
-
if (value_type == DictNodeType.Integer) {
|
|
265
|
-
return ("" + int_value)
|
|
266
|
-
}
|
|
267
|
-
if (value_type == DictNodeType.String) {
|
|
268
|
-
return (("\"" + (this.EncodeString(string_value))) + "\"")
|
|
269
|
-
}
|
|
270
|
-
if (value_type == DictNodeType.Boolean) {
|
|
271
|
-
if boolean_value {
|
|
272
|
-
return "true"
|
|
273
|
-
} {
|
|
274
|
-
return "false"
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
if (value_type == DictNodeType.Array) {
|
|
279
|
-
def str:string ""
|
|
280
|
-
if is_property {
|
|
281
|
-
str = ((("\"" + vref) + "\"") + ":[")
|
|
282
|
-
} {
|
|
283
|
-
str = "["
|
|
284
|
-
}
|
|
285
|
-
for children item:DictNode i {
|
|
286
|
-
if (i > 0) {
|
|
287
|
-
str = (str + ",")
|
|
288
|
-
}
|
|
289
|
-
str = (str + (item.stringify()))
|
|
290
|
-
}
|
|
291
|
-
str = (str + "]")
|
|
292
|
-
return str
|
|
293
|
-
}
|
|
294
|
-
if (value_type == DictNodeType.Object) {
|
|
295
|
-
def str:string ""
|
|
296
|
-
if is_property {
|
|
297
|
-
return (((("\"" + vref) + "\"") + ":") + (object_value.stringify()))
|
|
298
|
-
} {
|
|
299
|
-
str = "{"
|
|
300
|
-
for keys key:string i {
|
|
301
|
-
if (i > 0) {
|
|
302
|
-
str = (str + ",")
|
|
303
|
-
}
|
|
304
|
-
def item:DictNode (get objects key)
|
|
305
|
-
str = (str + (item.stringify()))
|
|
306
|
-
}
|
|
307
|
-
str = (str + "}")
|
|
308
|
-
return str
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
return ""
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
}
|
|
316
|
-
|