ranger-compiler 2.1.70 → 3.0.4
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 +114 -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
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
operators {
|
|
3
|
-
has_console_colors cmdHasColors:boolean () {
|
|
4
|
-
templates {
|
|
5
|
-
es6 @macro(true) ( "true" )
|
|
6
|
-
* @macro(true) ( "false" )
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
color_print cmdPrint:void (cname:string text:string) {
|
|
10
|
-
templates {
|
|
11
|
-
es6 ("console.log( require('chalk').keyword(" ( e 1 ) ")(" (e 2) "));" )
|
|
12
|
-
* @macro(true) ( nl "print " (e 2) nl )
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
class ColorConsole {
|
|
18
|
-
|
|
19
|
-
fn out:void (color:string str:string ) {
|
|
20
|
-
print str
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
operator type:RangerAppWriterContext all {
|
|
4
|
-
|
|
5
|
-
fn addUsage:void (cn:CodeNode) {
|
|
6
|
-
def ctx self
|
|
7
|
-
def currM ( ctx.getCurrentMethod())
|
|
8
|
-
if(ctx.isDefinedClass(cn.type_name)) {
|
|
9
|
-
def cl (ctx.findClass(cn.type_name))
|
|
10
|
-
currM.addClassUsage(cl ctx)
|
|
11
|
-
}
|
|
12
|
-
if(ctx.isDefinedClass(cn.eval_type_name)) {
|
|
13
|
-
def cl (ctx.findClass(cn.eval_type_name))
|
|
14
|
-
currM.addClassUsage(cl ctx)
|
|
15
|
-
}
|
|
16
|
-
if(ctx.isDefinedClass(cn.eval_array_type)) {
|
|
17
|
-
def cl (ctx.findClass(cn.eval_array_type))
|
|
18
|
-
currM.addClassUsage(cl ctx)
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
fn getTargetLang:string () {
|
|
23
|
-
if( has self.targetLangName ) {
|
|
24
|
-
return self.targetLangName
|
|
25
|
-
}
|
|
26
|
-
if(self.parent) {
|
|
27
|
-
return (getTargetLang (unwrap self.parent))
|
|
28
|
-
}
|
|
29
|
-
return "ranger"
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
fn addPluginOp( name:string ) {
|
|
33
|
-
def root (self.getRoot())
|
|
34
|
-
set self.pluginSpecificOperators name true
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
fn create_var:RangerAppParamDesc ( name:string type_name:string ) {
|
|
38
|
-
def fieldNode@(lives) (r.vref name type_name)
|
|
39
|
-
fieldNode.value_type = (fieldNode.typeNameAsType(self))
|
|
40
|
-
def p@(lives):RangerAppParamDesc (new RangerAppParamDesc ())
|
|
41
|
-
p.name = name
|
|
42
|
-
p.value_type = fieldNode.value_type
|
|
43
|
-
p.node = fieldNode
|
|
44
|
-
p.nameNode = fieldNode
|
|
45
|
-
p.is_optional = false
|
|
46
|
-
self.defineVariable(p.name p)
|
|
47
|
-
return p
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
fn create_var:RangerAppParamDesc ( name:string usingNode:CodeNode ) {
|
|
51
|
-
def fieldNode (r.vref name)
|
|
52
|
-
def p@(lives):RangerAppParamDesc (new RangerAppParamDesc ())
|
|
53
|
-
p.name = name
|
|
54
|
-
p.value_type = usingNode.value_type
|
|
55
|
-
p.node = usingNode
|
|
56
|
-
p.nameNode = usingNode
|
|
57
|
-
p.is_optional = false
|
|
58
|
-
self.defineVariable(p.name p)
|
|
59
|
-
return p
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
fn create_register:RangerAppParamDesc ( name:string usingNode:CodeNode ) {
|
|
63
|
-
def fieldNode (r.vref name)
|
|
64
|
-
def p@(lives):RangerAppParamDesc (new RangerAppParamDesc ())
|
|
65
|
-
p.name = name
|
|
66
|
-
p.value_type = usingNode.value_type
|
|
67
|
-
p.node = usingNode
|
|
68
|
-
p.nameNode = usingNode
|
|
69
|
-
p.is_optional = false
|
|
70
|
-
self.defineVariable(p.name p)
|
|
71
|
-
return p
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
operator type:RangerFlowParser all {
|
|
3
|
-
|
|
4
|
-
fn EnterVarDef:void (node@(lives):CodeNode ctx:RangerAppWriterContext wr:CodeWriter) {
|
|
5
|
-
if (ctx.isInMethod()) {
|
|
6
|
-
|
|
7
|
-
if ((size node.children) < 2) {
|
|
8
|
-
ctx.addError(node "invalid variable definition")
|
|
9
|
-
return
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
; print " DEF expr level " + (ctx.expressionLevel()) + " -> " + (node.getCode())
|
|
13
|
-
|
|
14
|
-
def tName (node.getSecond())
|
|
15
|
-
self.CheckTypeAnnotationOf(tName ctx wr)
|
|
16
|
-
|
|
17
|
-
; var x = 100 --> var (= x 100)
|
|
18
|
-
if( tName.expression ) {
|
|
19
|
-
remove node.children 1
|
|
20
|
-
tName.children.forEach({
|
|
21
|
-
if(index == 1) {
|
|
22
|
-
if( item.expression ) {
|
|
23
|
-
push node.children ( (at item.children 0 ) .copy())
|
|
24
|
-
} {
|
|
25
|
-
push node.children ( item.copy())
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
if(index > 1) {
|
|
29
|
-
push node.children (item.copy())
|
|
30
|
-
}
|
|
31
|
-
})
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if ((size node.children) > 3) {
|
|
35
|
-
ctx.addError(node "invalid variable definition")
|
|
36
|
-
return
|
|
37
|
-
}
|
|
38
|
-
def cn@(lives):CodeNode (at node.children 1)
|
|
39
|
-
def p:RangerAppParamDesc (new RangerAppParamDesc ())
|
|
40
|
-
def defaultArg:CodeNode
|
|
41
|
-
def is_immutable false
|
|
42
|
-
|
|
43
|
-
cn.definedTypeClass = (TFactory.new_def_signature(cn ctx wr))
|
|
44
|
-
|
|
45
|
-
if ((size node.children) == 2) {
|
|
46
|
-
if ((cn.value_type != RangerNodeType.Array) && (cn.value_type != RangerNodeType.Hash)) {
|
|
47
|
-
if!(cn.hasFlag('unwrap')) {
|
|
48
|
-
cn.setFlag("optional")
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
if ((strlen cn.vref) == 0) {
|
|
53
|
-
ctx.addError(node "invalid variable definition")
|
|
54
|
-
}
|
|
55
|
-
if (cn.hasFlag("weak")) {
|
|
56
|
-
p.changeStrength(0 1 node)
|
|
57
|
-
} {
|
|
58
|
-
p.changeStrength(1 1 node)
|
|
59
|
-
}
|
|
60
|
-
node.hasVarDef = true
|
|
61
|
-
if ((size node.children) > 2) {
|
|
62
|
-
p.init_cnt = 1
|
|
63
|
-
p.def_value = (at node.children 2)
|
|
64
|
-
p.is_optional = false
|
|
65
|
-
defaultArg = (at node.children 2)
|
|
66
|
-
ctx.setInExpr()
|
|
67
|
-
|
|
68
|
-
self.WalkNode( (unwrap defaultArg) ctx wr)
|
|
69
|
-
ctx.unsetInExpr()
|
|
70
|
-
|
|
71
|
-
if (defaultArg.hasFlag("optional")) {
|
|
72
|
-
cn.setFlag("optional")
|
|
73
|
-
}
|
|
74
|
-
if (defaultArg.hasFlag("immutable")) {
|
|
75
|
-
cn.setFlag("immutable")
|
|
76
|
-
}
|
|
77
|
-
if( defaultArg.hasParamDesc ) {
|
|
78
|
-
def paramDesc (unwrap defaultArg.paramDesc)
|
|
79
|
-
if( !null? paramDesc.propertyClass) {
|
|
80
|
-
if( paramDesc.propertyClass.nameNode.hasFlag("immutable") ) {
|
|
81
|
-
; TODO: add hash support
|
|
82
|
-
if (defaultArg.eval_type == RangerNodeType.Array || defaultArg.eval_type == RangerNodeType.Hash) {
|
|
83
|
-
is_immutable = true
|
|
84
|
-
; ctx.addError( node "creating a mutable copy of immutable array is currently not permitted")
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if( paramDesc.is_immutable) {
|
|
89
|
-
is_immutable = true
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if (defaultArg.eval_type == RangerNodeType.Array) {
|
|
93
|
-
node.op_index = 1
|
|
94
|
-
}
|
|
95
|
-
if (cn.value_type == RangerNodeType.Enum) {
|
|
96
|
-
cn.eval_type_name = (at defaultArg.ns 0)
|
|
97
|
-
}
|
|
98
|
-
if (cn.value_type == RangerNodeType.Char) {
|
|
99
|
-
if ((defaultArg.eval_type != RangerNodeType.Integer) && (defaultArg.eval_type != RangerNodeType.Char)) {
|
|
100
|
-
ctx.addError( (unwrap defaultArg) ('Char should be assigned char or integer value --> ' + (defaultArg.getCode())))
|
|
101
|
-
} {
|
|
102
|
-
defaultArg.eval_type = RangerNodeType.Char
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
} {
|
|
106
|
-
if ((cn.value_type != RangerNodeType.Hash) && (cn.value_type != RangerNodeType.Array) && (false == (cn.hasFlag("optional")))) {
|
|
107
|
-
if(cn.hasFlag('unwrap')) {
|
|
108
|
-
} {
|
|
109
|
-
cn.setFlag("optional")
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
; simple local variable type inference
|
|
114
|
-
if ((size node.children) > 2) {
|
|
115
|
-
if( ( (strlen cn.type_name) == 0) && ( (strlen cn.array_type) == 0 ) ) {
|
|
116
|
-
cn.inferDefTypeFromValue( node )
|
|
117
|
-
if(cn.value_type == RangerNodeType.ExpressionType) {
|
|
118
|
-
cn.eval_type = RangerNodeType.ExpressionType
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
ctx.hadValidType(cn)
|
|
124
|
-
cn.defineNodeTypeTo(cn ctx)
|
|
125
|
-
|
|
126
|
-
p.name = cn.vref
|
|
127
|
-
if (p.value_type == RangerNodeType.NoType) {
|
|
128
|
-
if ((0 == (strlen cn.type_name)) && (!null? defaultArg)) {
|
|
129
|
-
p.value_type = defaultArg.eval_type
|
|
130
|
-
cn.type_name = defaultArg.eval_type_name
|
|
131
|
-
cn.eval_type_name = defaultArg.eval_type_name
|
|
132
|
-
cn.value_type = defaultArg.eval_type
|
|
133
|
-
}
|
|
134
|
-
} {
|
|
135
|
-
p.value_type = cn.value_type
|
|
136
|
-
}
|
|
137
|
-
p.node = node
|
|
138
|
-
p.nameNode = cn
|
|
139
|
-
p.varType = RangerContextVarType.LocalVariable
|
|
140
|
-
if is_immutable {
|
|
141
|
-
p.is_immutable = is_immutable
|
|
142
|
-
}
|
|
143
|
-
if cn.has_vref_annotation {
|
|
144
|
-
ctx.log(node "ann" "At a variable -> Found has_vref_annotation annotated reference ")
|
|
145
|
-
def ann:CodeNode cn.vref_annotation
|
|
146
|
-
if ((size ann.children) > 0) {
|
|
147
|
-
def fc:CodeNode (at ann.children 0)
|
|
148
|
-
ctx.log(node 'ann' ('value of first annotation ' + fc.vref + ' and variable name ' + cn.vref))
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
if cn.has_type_annotation {
|
|
152
|
-
ctx.log(node "ann" "At a variable -> Found annotated reference ")
|
|
153
|
-
def ann:CodeNode cn.type_annotation
|
|
154
|
-
if ((size ann.children) > 0) {
|
|
155
|
-
def fc:CodeNode (at ann.children 0)
|
|
156
|
-
ctx.log(node 'ann' ('value of first annotation ' + fc.vref + ' and variable name ' + cn.vref))
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
cn.hasParamDesc = true
|
|
161
|
-
cn.ownParamDesc = p
|
|
162
|
-
cn.paramDesc = p
|
|
163
|
-
node.hasParamDesc = true
|
|
164
|
-
node.paramDesc = p
|
|
165
|
-
cn.eval_type = (cn.typeNameAsType(ctx))
|
|
166
|
-
cn.eval_type_name = cn.type_name
|
|
167
|
-
|
|
168
|
-
if ((size node.children) > 2) {
|
|
169
|
-
|
|
170
|
-
if( has defaultArg.register_name) {
|
|
171
|
-
def rr ( ctx.getVariableDef(defaultArg.register_name) )
|
|
172
|
-
if(!null? rr.nameNode) {
|
|
173
|
-
if(!null? rr.nameNode.expression_value) {
|
|
174
|
-
cn.expression_value = ( rr.nameNode.expression_value.copy())
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
if(defaultArg.eval_type == RangerNodeType.ExpressionType) {
|
|
179
|
-
if(!null? defaultArg.expression_value) {
|
|
180
|
-
cn.expression_value = (defaultArg.expression_value.copy())
|
|
181
|
-
} {
|
|
182
|
-
if( defaultArg.hasParamDesc ) {
|
|
183
|
-
if( (!null? defaultArg.paramDesc.nameNode) && (!null? defaultArg.paramDesc.nameNode.expression_value) ) {
|
|
184
|
-
cn.eval_type = RangerNodeType.ExpressionType
|
|
185
|
-
cn.expression_value = (defaultArg.paramDesc.nameNode.expression_value.copy())
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
if(!null? defaultArg) {
|
|
192
|
-
self.convertToUnion( cn.eval_type_name (unwrap defaultArg) ctx wr)
|
|
193
|
-
if(!null? defaultArg.evalTypeClass) {
|
|
194
|
-
cn.evalTypeClass = defaultArg.evalTypeClass
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
; TODO: enable this
|
|
198
|
-
if (cn.eval_type != defaultArg.eval_type) {
|
|
199
|
-
|
|
200
|
-
def b1 (( cn.eval_type == RangerNodeType.Char && defaultArg.eval_type == RangerNodeType.Integer ))
|
|
201
|
-
def b2 ( cn.eval_type == RangerNodeType.Integer && defaultArg.eval_type == RangerNodeType.Char )
|
|
202
|
-
if( false == ( b1 || b2 ) ) {
|
|
203
|
-
ctx.addError(node ((('Variable was assigned an incompatible type. Types were ' + cn.eval_type) + ' vs ') + defaultArg.eval_type))
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
} {
|
|
207
|
-
p.is_optional = true
|
|
208
|
-
}
|
|
209
|
-
ctx.defineVariable(p.name p)
|
|
210
|
-
if ((size node.children) > 2) {
|
|
211
|
-
self.shouldBeEqualTypes(cn (unwrap p.def_value) ctx "Variable was assigned an incompatible type.")
|
|
212
|
-
}
|
|
213
|
-
addUsage ctx cn
|
|
214
|
-
} {
|
|
215
|
-
def cn:CodeNode (at node.children 1)
|
|
216
|
-
cn.eval_type = (cn.typeNameAsType(ctx))
|
|
217
|
-
cn.eval_type_name = cn.type_name
|
|
218
|
-
if ((size node.children) > 2) {
|
|
219
|
-
self.shouldBeEqualTypes((at node.children 1) (at node.children 2) ctx "Variable was assigned an incompatible type.")
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
Import "stdops.clj"
|
|
3
|
-
Import "CmdParams.clj"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class InputFSFolder @serialize(true) {
|
|
7
|
-
def name ""
|
|
8
|
-
def data ""
|
|
9
|
-
def is_folder true
|
|
10
|
-
def base64bin false
|
|
11
|
-
def folders:[InputFSFolder]
|
|
12
|
-
def files:[InputFSFile]
|
|
13
|
-
|
|
14
|
-
fn forTree (cb:(_:void (item:InputFSFolder)) ) {
|
|
15
|
-
cb(this)
|
|
16
|
-
folders.forEach({
|
|
17
|
-
item.forTree(cb)
|
|
18
|
-
})
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
class InputFSFile @serialize(true) {
|
|
22
|
-
def name ""
|
|
23
|
-
def data ""
|
|
24
|
-
def is_folder false
|
|
25
|
-
def base64bin false
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
; --> the running environment for the current setup...
|
|
29
|
-
class InputEnv @serialize(true) {
|
|
30
|
-
def use_real false
|
|
31
|
-
def filesystem:InputFSFolder
|
|
32
|
-
def envVars:[string:string]
|
|
33
|
-
def commandLine:CmdParams
|
|
34
|
-
|
|
35
|
-
fn setEnv (name:string value:string) {
|
|
36
|
-
set envVars name value
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
operator type:void all {
|
|
41
|
-
fn env_var:string ( env:InputEnv name:string) {
|
|
42
|
-
if(env.use_real) {
|
|
43
|
-
if(has env.envVars name) {
|
|
44
|
-
return (unwrap (get env.envVars name))
|
|
45
|
-
}
|
|
46
|
-
def ev (env_var name)
|
|
47
|
-
if(!null? ev) {
|
|
48
|
-
return (unwrap ev)
|
|
49
|
-
}
|
|
50
|
-
return ''
|
|
51
|
-
}
|
|
52
|
-
return (?? (get env.envVars name) '')
|
|
53
|
-
}
|
|
54
|
-
fn install_directory:string (env:InputEnv) {
|
|
55
|
-
if(env.use_real) {
|
|
56
|
-
return (install_directory)
|
|
57
|
-
}
|
|
58
|
-
return '/'
|
|
59
|
-
}
|
|
60
|
-
fn current_directory:string (env:InputEnv) {
|
|
61
|
-
if(env.use_real) {
|
|
62
|
-
return (current_directory)
|
|
63
|
-
}
|
|
64
|
-
return '/'
|
|
65
|
-
}
|
|
66
|
-
fn file_exists:boolean (env:InputEnv path:string name:string) {
|
|
67
|
-
if(env.use_real) {
|
|
68
|
-
return (file_exists path name)
|
|
69
|
-
}
|
|
70
|
-
def fo (find_file env path name)
|
|
71
|
-
return (!null? fo)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
fn find_file@(optional weak):InputFSFile (env:InputEnv path:string name:string) {
|
|
75
|
-
def res@(optional):InputFSFile
|
|
76
|
-
if( path == '/' ){
|
|
77
|
-
def files (filter env.filesystem.files {
|
|
78
|
-
return item.name == name
|
|
79
|
-
})
|
|
80
|
-
if( has files ) {
|
|
81
|
-
res = (at files 0)
|
|
82
|
-
}
|
|
83
|
-
return res
|
|
84
|
-
}
|
|
85
|
-
def parts (strsplit path '/')
|
|
86
|
-
def fold (env.filesystem)
|
|
87
|
-
def i 0
|
|
88
|
-
while( ( (size parts) > i ) && (!null? fold) ) {
|
|
89
|
-
def pathName (at parts i)
|
|
90
|
-
if(has pathName) {
|
|
91
|
-
def folder (filter fold.folders {
|
|
92
|
-
return item.name == pathName
|
|
93
|
-
})
|
|
94
|
-
if( has folder ) {
|
|
95
|
-
fold = (at folder 0)
|
|
96
|
-
} {
|
|
97
|
-
return res
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
i = i + 1
|
|
101
|
-
}
|
|
102
|
-
if(!null? fold) {
|
|
103
|
-
def files (filter fold.files {
|
|
104
|
-
return item.name == name
|
|
105
|
-
})
|
|
106
|
-
if( has files ) {
|
|
107
|
-
res = (at files 0)
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
return res
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
fn write_file:void (env:InputEnv path:string name:string data:string) {
|
|
114
|
-
if( env.use_real ) {
|
|
115
|
-
write_file path name data
|
|
116
|
-
return
|
|
117
|
-
}
|
|
118
|
-
print data
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
fn read_file@(optional):string (env:InputEnv path:string name:string) {
|
|
122
|
-
if env.use_real {
|
|
123
|
-
return (read_file path name)
|
|
124
|
-
}
|
|
125
|
-
def resStr@(optional):string
|
|
126
|
-
def f (find_file env path name)
|
|
127
|
-
if(!null? f) {
|
|
128
|
-
resStr = f.data
|
|
129
|
-
}
|
|
130
|
-
return resStr
|
|
131
|
-
}
|
|
132
|
-
fn create_file@(optional weak):InputFSFile (fs:InputFSFolder name:string) {
|
|
133
|
-
|
|
134
|
-
def res@(weak):InputFSFile
|
|
135
|
-
def files (fs.files.filter({
|
|
136
|
-
return item.name == name
|
|
137
|
-
}))
|
|
138
|
-
def folders (fs.folders.filter({
|
|
139
|
-
return item.name == name
|
|
140
|
-
}))
|
|
141
|
-
if(!( has folders) ) {
|
|
142
|
-
if(has files) {
|
|
143
|
-
res = (at files 0)
|
|
144
|
-
} {
|
|
145
|
-
def f (new InputFSFile)
|
|
146
|
-
f.name = name
|
|
147
|
-
push fs.files f
|
|
148
|
-
res = f
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return res
|
|
152
|
-
}
|
|
153
|
-
fn create_folder@(optional weak):InputFSFolder (fs:InputFSFolder name:string) {
|
|
154
|
-
def res@(weak):InputFSFolder
|
|
155
|
-
def files (fs.files.filter({
|
|
156
|
-
return item.name == name
|
|
157
|
-
}))
|
|
158
|
-
def folders (fs.folders.filter({
|
|
159
|
-
return item.name == name
|
|
160
|
-
}))
|
|
161
|
-
if(!( has files) ) {
|
|
162
|
-
if(has folders) {
|
|
163
|
-
res = (at folders 0)
|
|
164
|
-
} {
|
|
165
|
-
def f (new InputFSFolder)
|
|
166
|
-
f.name = name
|
|
167
|
-
push fs.folders f
|
|
168
|
-
res = f
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return res
|
|
172
|
-
}
|
|
173
|
-
fn create_file@(optional weak):InputFSFile (fs:InputFSFolder name:string data:string) {
|
|
174
|
-
def f (create_file fs name)
|
|
175
|
-
if(!null? f) {
|
|
176
|
-
f.data = data
|
|
177
|
-
}
|
|
178
|
-
return f
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
class test_input_filesystem {
|
|
184
|
-
|
|
185
|
-
static fn main() {
|
|
186
|
-
|
|
187
|
-
; compile time pattern matching....
|
|
188
|
-
|
|
189
|
-
defn CreateFolder (folder fname) (create_folder (unwrap folder) fname)
|
|
190
|
-
defn CreateFolder (folder fname) (create_folder folder fname)
|
|
191
|
-
defn CreateFolder (fname) (create_folder (unwrap env.filesystem) fname)
|
|
192
|
-
|
|
193
|
-
defn CreateFile (folder name data) (create_file folder name data)
|
|
194
|
-
defn CreateFile (folder name data) (create_file (unwrap folder) name data)
|
|
195
|
-
defn CreateFile (name data) (create_file (unwrap env.filesystem) name data)
|
|
196
|
-
|
|
197
|
-
print "--> started"
|
|
198
|
-
def env (new InputEnv)
|
|
199
|
-
env.filesystem = (new InputFSFolder)
|
|
200
|
-
|
|
201
|
-
CreateFile 'README2.md' 'Data of readme round here...'
|
|
202
|
-
|
|
203
|
-
create_file (unwrap env.filesystem) 'README.md' '# the readme file'
|
|
204
|
-
set env.envVars 'RANGER_DIR' '/'
|
|
205
|
-
|
|
206
|
-
def subF (CreateFolder 'lib' )
|
|
207
|
-
def someFile (create_file (unwrap subF) 'stdlib.clj' 'Contents of the standard library')
|
|
208
|
-
|
|
209
|
-
; try to create some files...
|
|
210
|
-
CreateFile subF 'JSON.clj' 'JSON file comes round here...'
|
|
211
|
-
CreateFile subF 'DOMLib.clj' 'JSON file comes round here...'
|
|
212
|
-
|
|
213
|
-
(CreateFile (CreateFolder subF 'etc' ) 'readme.txt' '...' )
|
|
214
|
-
(CreateFile (CreateFolder subF 'etc' ) 'notes.txt' '...' )
|
|
215
|
-
|
|
216
|
-
print (to_string (env.toDictionary()))
|
|
217
|
-
|
|
218
|
-
def data (read_file env '/' 'README.md')
|
|
219
|
-
if(!null? data) {
|
|
220
|
-
print " -> data " + (unwrap data)
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
def data (read_file env '/lib/' 'stdlib.clj')
|
|
224
|
-
if(!null? data) {
|
|
225
|
-
print " -> data " + (unwrap data)
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
if( (file_exists env '/lib/' 'stdlib.clj')) {
|
|
229
|
-
print "stdlib does exists"
|
|
230
|
-
}
|
|
231
|
-
if( (file_exists env '/lib/etc/' 'readme.txt')) {
|
|
232
|
-
print "/lib/etc/readme.txt does exists"
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
defn fInfo (x) {
|
|
236
|
-
def mF:InputFSFolder x
|
|
237
|
-
print ' folder -> ' + ((mF).name)
|
|
238
|
-
}
|
|
239
|
-
defn fInfo (x) {
|
|
240
|
-
def mF:InputFSFile x
|
|
241
|
-
print ' file -> ' + (mF.name) + " size : " + (strlen mF.data)
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
defn ShowThem (f) {
|
|
246
|
-
def myFold f
|
|
247
|
-
print "*******************************"
|
|
248
|
-
print " DIR: " + (? (has myFold.name) myFold.name '/' )
|
|
249
|
-
ForEach myFold.folders fInfo
|
|
250
|
-
ForEach myFold.files fInfo
|
|
251
|
-
ForEach (ConCat myFold.files myFold.folders) (# print '...')
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
defn ShowThem (f) {
|
|
255
|
-
def myFile:InputFSFile f
|
|
256
|
-
print " file " + myFile.name
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
env.filesystem.forTree({
|
|
260
|
-
ShowThem item
|
|
261
|
-
})
|
|
262
|
-
|
|
263
|
-
; NOTICE: the param...it is there two times...
|
|
264
|
-
|
|
265
|
-
defn Tell (something) {
|
|
266
|
-
def s something
|
|
267
|
-
print something
|
|
268
|
-
ret s
|
|
269
|
-
}
|
|
270
|
-
; maybe have to walk the params first or not ?
|
|
271
|
-
Tell ( 'say: ' + ( Tell 'It is ok' ) )
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
}
|
|
276
|
-
}
|