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
package/fiddle/compileEnv.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
window._Ranger_compiler_environment_ = {"use_real":false,"filesystem":{"name":"","data":"","is_folder":true,"base64bin":false,"folders":[],"files":[{"name":"Lang.clj","data":"language {\r\n\r\n name \"Ranger\"\r\n\r\n ; compilation targets might be defined here like this\r\n targets {\r\n ; short common name file extension\r\n es5 ES5 js \r\n es6 JavaScript js\r\n java7 Java7 java\r\n kotlin Kotlin kt\r\n scala Scala scala\r\n cpp Cpp cpp\r\n csharp CSharp cs\r\n swift3 Swift3 swift\r\n ts TypeScript ts\r\n flow Flow flow\r\n go Golang go\r\n php PHP php\r\n python Python py\r\n nim Nim nim\r\n }\r\n\r\n toplevel_keywords (class systemclass Constructor fn sfn Import Extend Enum def let operators)\r\n annotation_keywors (weak strong lives temp)\r\n \r\n ; transformations for the reserved words for function names or other keywords\r\n reserved_words {\r\n map FnMap\r\n forEach forEachItem\r\n self _self\r\n }\r\n\r\n \r\n commands {\r\n\r\n random _:double () {\r\n templates {\r\n es6 ('Math.random()')\r\n }\r\n }\r\n\r\n random _:int ( min:int max:int) {\r\n templates {\r\n es6 ('Math.floor(Math.random()*(' (e 2) ' - ' (e 1)' + 1) + ' (e 1)')')\r\n }\r\n }\r\n \r\n\r\n if_javascript _:void ( code:block ) @doc('run this code only in JavaScript') {\r\n templates {\r\n es6 ( (block 1))\r\n * ()\r\n }\r\n }\r\n\r\n if_go _:void ( code:block ) @doc('run this code only for Golang target') {\r\n templates {\r\n go ( (block 1))\r\n * ()\r\n }\r\n }\r\n\r\n if_java _:void ( code:block ) @doc('run this code only for Java target') {\r\n templates {\r\n java7 ( (block 1))\r\n * ()\r\n }\r\n }\r\n\r\n if_swift _:void ( code:block ) @doc('run this code only for Swift target') {\r\n templates {\r\n swift3 ( (block 1))\r\n * ()\r\n }\r\n }\r\n\r\n if_php _:void ( code:block ) @doc('run this code only for PHP target') {\r\n templates {\r\n php ( (block 1))\r\n * ()\r\n }\r\n }\r\n\r\n if_cpp _:void ( code:block ) @doc('run this code only for C++ target') {\r\n templates {\r\n cpp ( (block 1))\r\n * ()\r\n }\r\n }\r\n\r\n if_csharp _:void ( code:block ) @doc('run this code only for C# target') {\r\n templates {\r\n csharp ( (block 1))\r\n * ()\r\n }\r\n }\r\n\r\n if_scala _:void ( code:block ) @doc('run this code only for Scala target') {\r\n templates {\r\n scala ( (block 1))\r\n * ()\r\n }\r\n }\r\n\r\n has _:boolean (str:string) @doc('If string value is greater than > 0') {\r\n templates {\r\n * @macro(true) ('( (strlen ' (e 1) ') > 0 )')\r\n }\r\n }\r\n\r\n ; compiler options...\r\n has_option _:boolean ( name:string ) {\r\n templates {\r\n * @macro(true) ( \"((strlen \\\"\" (optional_option 1) \"\\\" ) > 0)\")\r\n }\r\n doc \"Returns true if compiler setting `name` has been enabled\"\r\n }\r\n get_option _:string ( name:string ) {\r\n templates {\r\n * @macro(true) ( \"\\\"\" (optional_option 1) \"\\\"\")\r\n }\r\n doc \"Returns compiler setting `name`\"\r\n }\r\n get_required_option _:string ( n:string ) {\r\n templates {\r\n * @macro(true) ( \"\\\"\" (required_option 1) \"\\\"\")\r\n }\r\n }\r\n\r\n sha256 _:string (input:string) {\r\n templates {\r\n ranger ( \"(sha256 \" (e 1) \")\")\r\n es6 (\"require('crypto').createHash('sha256').update(\" (e 1) \").digest('hex')\")\r\n cpp ( \"picosha2::hash256_hex_string(\" (e 1) \")\"\r\n (imp \"\\\"picosha2.h\\\"\")\r\n (install_file \"picosha2.h\")\r\n (plugin 'makefile' ( (dep 'picosha2.h' 'https://github.com/okdshin/PicoSHA2/blob/master/picosha2.h' ) ) ) \r\n )\r\n; fmt.Printf(\"sha256:\\t%x\\n\", sha_256.Sum(nil))\r\n go ( \"_r_md5(\" (e 1) \")\" \r\n (create_polyfill\r\n\"\r\nfunc _r_md5(value string) string {\r\n\th := sha256.Sum256([]byte(value))\r\n\treturn fmt.Sprintf(\\\"%x\\\", h[:])\r\n}\r\n\" \r\n ) \r\n (imp \"crypto/sha256\") (imp \"fmt\")) \r\n php( \"hash('sha256', \" (e 1) \")\")\r\n }\r\n }\r\n\r\n md5 _:string (input:string) {\r\n templates {\r\n ranger ( \"(md5 \" (e 1) \")\")\r\n es6 (\"require('crypto').createHash('md5').update(\" (e 1) \").digest('hex')\")\r\n }\r\n }\r\n \r\n nullify _:void (ptr@(optional):T) @doc('Clears the optional value to empty state') {\r\n templates {\r\n ranger ( \"(nullify \" (e 1) \")\")\r\n es6 ( (e 1) \" = undefined;\" nl)\r\n java7 ( (e 1) \" = null;\" nl)\r\n cpp ( (e 1) \"= NULL;\" nl)\r\n go ( (e 1) \" = nil;\" nl )\r\n php ( 'unset(' (e 1) ');' nl)\r\n }\r\n }\r\n\r\n ; immutable operators, maybe used by the compiler...\r\n ; https://github.com/Workiva/go-datastructures\r\n create_immutable_array _@(immutable):[T] () {\r\n templates {\r\n es6 (\"require('immutable').List() /** imm **/\")\r\n go (\"seq.NewList()\")\r\n }\r\n }\r\n create_immutable_hash _@(immutable):[K:T] () {\r\n templates {\r\n es6 (\"require('immutable').Map()\")\r\n go (\"seq.NewHashMap()\")\r\n }\r\n }\r\n\r\n M_PI mathPi:double () {\r\n templates {\r\n es6 (\"Math.PI\")\r\n go ( \"math.Pi\" (imp \"math\")) \r\n swift3 ( \"Double.pi\" (imp \"Foundation\")) \r\n java7 ( \"Math.PI\" (imp \"java.lang.Math\")) \r\n php (\"pi()\") \r\n cpp (\"M_PI\" (imp \"<math.h>\")) \r\n }\r\n }\r\n\r\n fabs fabs:double ( v:double ) {\r\n templates {\r\n es6 (\"Math.abs(\" (e 1) \")\")\r\n go ( \"math.Abs(\" (e 1) \")\" (imp \"math\")) \r\n swift3 ( \"abs(\" (e 1) \")\" (imp \"Foundation\")) \r\n java7 ( \"Math.abs(\" (e 1) \")\" (imp \"java.lang.Math\")) \r\n php ( \"abs(\" (e 1) \")\") \r\n cpp (\"fabs(\" (e 1) \")\" (imp \"<cmath>\")) \r\n }\r\n }\r\n tan tan:double ( v:double ) {\r\n templates {\r\n es6 (\"Math.tan(\" (e 1) \")\")\r\n go ( \"math.Tan(\" (e 1) \")\" (imp \"math\")) \r\n swift3 ( \"tan(\" (e 1) \")\" (imp \"Foundation\")) \r\n java7 ( \"Math.tan(\" (e 1) \")\" (imp \"java.lang.Math\")) \r\n php ( \"tan(\" (e 1) \")\") \r\n cpp (\"tan(\" (e 1) \")\" (imp \"<math.h>\")) \r\n }\r\n }\r\n\r\n golang_wait waiter:void (seconds:double ) {\r\n templates {\r\n go ( \"time.Sleep(time.Duration(\" (e 1) \" * float64(time.Second) )) \" (imp \"time\") )\r\n * ()\r\n }\r\n }\r\n\r\n wait cmdWait:void ( seconds:double ) {\r\n templates {\r\n es6 ( \"\" )\r\n * ()\r\n }\r\n }\r\n\r\n wait cmdWait:void ( seconds:double after:block) {\r\n templates {\r\n es6 ( \"setTimeout( () => { \" nl I (block 2) i nl \" }, 1000 * \" (e 1) \")\" )\r\n go ( \"go func() {\" nl I \"time.Sleep(time.Duration(\" (e 1) \" * float64(time.Second) )) \" nl (block 2) i nl \"}()\" nl (imp \"time\") )\r\n cpp ( \"std::this_thread::sleep_for(std::chrono::milliseconds((int)(\" (e 1) \" * 1000)));\" nl (block 2) nl (imp \"<chrono>\" ) (imp \"<thread>\" ) )\r\n php ( \"sleep(\" (e 1) \");\" nl (block 2) nl )\r\n swift3 ( \"usleep(UInt32(1000000*\" (e 1) \"));\" nl (block 2) nl )\r\n java7 (\r\n\r\n \"new Thread() {\" nl I\r\n \"@Override\" nl\r\n \"public void run() {\" nl I\r\n \"try {\" nl I\r\n \"Thread.sleep( (long) (1000 *\" (e 1) \"));\" nl\r\n \"getActivity().runOnUiThread(new Runnable(){\" nl\r\n \"@Override\" nl\r\n \"public void run() {\" nl I \r\n (block 2)\r\n nl i \"}\"\r\n nl i \r\n \"});\"\r\n nl i\r\n \"} catch (Exception e) {\" nl I\r\n \"System.err.println(e);\" nl i\r\n \"}\" nl i\r\n \"}\" nl i\r\n \"}.start();\" nl\r\n\r\n )\r\n }\r\n }\r\n \r\n\r\n ; Profiling\r\n timer cmdTimerBlock:void (name:string code:block) {\r\n templates {\r\n ; start := time.Now()\r\n go ( (defvar _start:int) \"for {\" nl I nl (varname _start) \" := time.Now()\" nl (block 2) nl \"fmt.Println(\" (e 1) \", time.Since(\" (varname _start) \") )\" nl \"break;\" i nl \"}\" (imp \"time\") (imp \"fmt\") )\r\n swift3 ( \"do {\" nl I nl \"let _start = CFAbsoluteTimeGetCurrent()\" nl (block 2) nl \"print(\" (e 1) \", CFAbsoluteTimeGetCurrent() - _start )\" i nl \"}\" (imp \"CoreFoundation\") )\r\n es6 ( \"console.time(\" (e 1) \");\" nl (block 2) nl \"console.timeEnd(\" (e 1) \");\" )\r\n php ( nl \"$time_start = microtime(true);\" nl (block 2) nl \"$time_end = microtime(true);\" nl \"echo(\" (e 1) \".($time_end - $time_start).\\\"\\\\n\\\");\" nl)\r\n java7 (\r\n nl \"long startTime = System.nanoTime();\" nl\r\n (block 2 )\r\n nl \"long elapsedTime = System.nanoTime() - startTime;\" nl\r\n nl \"System.out.println( \" (e 1) \"+ String.valueOf((double)elapsedTime / 1000000000.0));\" nl \r\n )\r\n ranger ( nl \"timer \" (e 1) \" {\" nl I (block 2) i nl \"}\" nl)\r\n cpp ( ( imp \"<ctime>\" )\r\n nl \"std::clock_t __begin = std::clock();\" nl\r\n (block 2)\r\n nl \"std::clock_t __end = std::clock();\" \r\n nl \"std::cout << \" (e 1) \" << \\\" : \\\" << ( double(__end - __begin) / CLOCKS_PER_SEC ) << std::endl;\" nl \r\n )\r\n * ( (block 2) )\r\n }\r\n }\r\n\r\n env_var cmdEnvVar@(optional):string ( name:string ) {\r\n templates {\r\n php (\"getenv(\" (e 1) \") === FALSE ? NULL : getenv(\" (e 1) \")\" )\r\n go (\r\n \"r_io_get_env(\" (e 1) \")\"\r\n (imp \"os\") \r\n(create_polyfill \"\r\n// polyfill for reading environment variable\r\nfunc r_io_get_env( name string) *GoNullable {\r\n res := new(GoNullable);\r\n value := os.Getenv(name)\r\n if len(value) > 0 {\r\n res.has_value = true\r\n res.value = value\r\n } else {\r\n res.has_value = false\r\n }\r\n return res \r\n}\r\n\")\r\n )\r\n es6 (\"process.env[\" (e 1) \"]\")\r\n cpp ( \"std::getenv(\" (e 1) \".c_str()) ? std::string(std::getenv(\" (e 1) \".c_str())) : std::string(\\\"\\\")\" (imp \"<cstdlib>\") )\r\n ; * (\"/* environment variable reading not implemented */\")\r\n }\r\n } \r\n\r\n ; Command line arguments\r\n shell_arg cmdArg:string (index:int) {\r\n templates {\r\n cpp ( \"std::string(__g_argv[\" (e 1) \" + 1])\")\r\n php ( \"$argv[\" (e 1) \" + 1]\" )\r\n java7 ( \"args[\" (e 1) \"]\")\r\n csharp ('Environment.GetCommandLineArgs()[' (e 1) ' + 1]' (imp \"System\"))\r\n go ( \"os.Args[\" (e 1) \" + 1]\" (imp \"os\"))\r\n swift3 (\"CommandLine.arguments[\" (e 1) \" + 1]\")\r\n es6 ( \"process.argv[ 2 + \" (e 1) \"]\")\r\n ranger (\"( shell_arg \" (e 1) \" )\")\r\n }\r\n }\r\n\r\n shell_arg_cnt cmdArg:int () @doc(\"return the number of arguments for command line utility\") {\r\n templates {\r\n cpp ( \"__g_argc - 1\")\r\n swift3 (\"CommandLine.arguments.count - 1\")\r\n csharp ('Environment.GetCommandLineArgs().Length - 1' (imp \"System\")) \r\n php ( \"(count($argv) - 1)\" )\r\n java7 ( \"args.length\")\r\n go ( \"int64( len( os.Args) - 1 )\" (imp \"os\"))\r\n es6 ( \"(process.argv.length - 2)\" )\r\n ranger (\"( shell_arg_cnt )\")\r\n }\r\n } \r\n\r\n ; I/O\r\n install_directory cmdArg:string () {\r\n templates {\r\n es6 ( \"__dirname\" )\r\n ranger (\"( install_directory )\")\r\n * ( \"\\\"./\\\"\")\r\n }\r\n } \r\n\r\n current_directory cmdArg:string () {\r\n templates {\r\n es6 ( \"process.cwd()\" )\r\n csharp( \"Directory.GetCurrentDirectory()\" (imp \"System\") (imp \"System.IO\"))\r\n ranger (\"( current_directory )\")\r\n cpp ( \"__cpp_curr_dir()\"\r\n(imp \"<stdio.h>\")\r\n(create_polyfill\r\n\"\r\n\r\n#ifdef _MSC_VER\r\n #include <direct.h>\r\n #define __RGetCurrentDir _getcwd\r\n#else\r\n #include <unistd.h>\r\n #define __RGetCurrentDir getcwd\r\n#endif\r\n\r\nstd::string __cpp_curr_dir() {\r\n char cCurrentPath[FILENAME_MAX];\r\n if (!__RGetCurrentDir(cCurrentPath, sizeof(cCurrentPath)))\r\n {\r\n return \\\"\\\";\r\n }\r\n cCurrentPath[sizeof(cCurrentPath) - 1] = '\\\\0';\r\n std::string result(cCurrentPath);\r\n return result;\r\n}\r\n\"\r\n)\r\n\r\n )\r\n * ( \"\\\".\\\"\")\r\n }\r\n } \r\n\r\n file_exists cmdIsDir:boolean (path:string filename:string) {\r\n templates {\r\n cpp ( \"r_cpp_file_exists( \" (e 1) \" + std::string(\\\"/\\\") + \" (e 2) \")\" (imp \"<sys/stat.h>\") (imp \"<string>\")\r\n(create_polyfill \"\r\nbool r_cpp_file_exists(std::string name) \r\n{\r\n struct stat buffer;\r\n return (stat (name.c_str(), &buffer) == 0);\r\n} \r\n \") )\r\n swift3 ( \"r_file_exists(fileName:\" (e 1) \" + \\\"/\\\" + \" (e 2) \" )\" \r\n\r\n(create_polyfill \"\r\nfunc r_file_exists ( fileName:String ) -> Bool {\r\n let fileManager = FileManager.default\r\n var isDir : ObjCBool = false\r\n if fileManager.fileExists(atPath: fileName, isDirectory:&isDir) {\r\n if isDir.boolValue {\r\n return false\r\n } else {\r\n return true\r\n }\r\n } else {\r\n return false\r\n } \r\n}\r\n \") \r\n )\r\n es6 (\"require(\\\"fs\\\").existsSync(\" (e 1) \" + \\\"/\\\" + \" (e 2) \" )\")\r\n ranger (\"( file_exists \" (e 1) \" + \\\"/\\\" + \" (e 2) \" )\")\r\n java7 ( \"new File(\" (e 1) \" + '/' + \" (e 2) \").exists()\" (imp \"java.io.File\") )\r\n php ( \"file_exists(\" (e 1) \".'/'.\" (e 2) \")\" )\r\n go ( \"r_file_exists(\" (e 1) \", \" (e 2) \")\"\r\n(create_polyfill\r\n\"\r\nfunc r_file_exists(pathName string, fileName string) bool {\r\n if _, err := os.Stat(pathName + \\\"/\\\" + fileName); os.IsNotExist(err) {\r\n return false\r\n }\r\n return true\r\n}\r\n\"\r\n) \r\n )\r\n }\r\n }\r\n\r\n dir_exists cmdIsDir:boolean (path:string) {\r\n templates {\r\n csharp ( \"false /* dir_exists not implemented */ \")\r\n scala ( \"false /* dir_exists not implemented */ \")\r\n swift3 ( \"r_dir_exists( dirName: \" (e 1) \")\" \r\n\r\n(create_polyfill \"\r\nfunc r_dir_exists ( dirName:String ) -> Bool {\r\n let fileManager = FileManager.default\r\n var isDir : ObjCBool = false\r\n if fileManager.fileExists(atPath: dirName, isDirectory:&isDir) {\r\n if isDir.boolValue {\r\n return true\r\n } else {\r\n return false\r\n }\r\n } else {\r\n return false\r\n } \r\n}\r\n \") \r\n )\r\n cpp ( \"r_cpp_dir_exists( \" (e 1) \" )\" (imp \"<sys/stat.h>\") (imp \"<string>\")\r\n(create_polyfill \"\r\nbool r_cpp_dir_exists(std::string name) \r\n{\r\n struct stat buffer;\r\n return (stat (name.c_str(), &buffer) == 0);\r\n} \r\n \") ) \r\n java7 ( \"new File(\" (e 1) \").exists()\" (imp \"java.io.File\") )\r\n es6 (\"require(\\\"fs\\\").existsSync( \" (e 1) \" )\")\r\n ranger (\"( dir_exists \" (e 1) \" )\")\r\n php ( \"is_dir(\" (e 1) \")\" )\r\n go ( \"r_dir_exists(\" (e 1) \")\"\r\n(create_polyfill\r\n\"\r\nfunc r_dir_exists(pathName string) bool {\r\n if _, err := os.Stat(pathName); os.IsNotExist(err) {\r\n return false\r\n }\r\n return true\r\n}\r\n\"\r\n) \r\n ) \r\n }\r\n }\r\n\r\n create_dir cmdCreateDir:void (path:string) {\r\n templates {\r\n scala ( \"/* create_dir not implemented */ \")\r\n csharp ( \"/* create_dir not implemented */ \")\r\n\r\n cpp ( \"r_cpp_create_dir( \" (e 1) \" );\" nl (imp \"<sys/stat.h>\") (imp \"<sys/types.h>\") (imp \"<string>\")\r\n(create_polyfill \"\r\nvoid r_cpp_create_dir(std::string name) \r\n{\r\n mkdir( name.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH );\r\n} \r\n \") )\r\n swift3 ( nl ) \r\n php ( nl \"mkdir(\" (e 1) \");\" nl )\r\n es6 (\"require(\\\"fs\\\").mkdirSync( \" (e 1) \")\")\r\n go ( nl \"_ = os.Mkdir( \" (e 1 ) \" , os.ModePerm)\" nl (imp \"os\") )\r\n\r\n ranger ( nl \"create_dir \" (e 1) nl)\r\n java7 ( nl \"createDir(\" (e 1) \");\" nl \r\n (imp \"java.io.File\")\r\n(create_polyfill \"\r\nstatic void createDir(String path) \r\n{\r\n try{\r\n File theDir = new File(path);\r\n if (!theDir.exists()) {\r\n theDir.mkdir();\r\n }\r\n } catch(SecurityException se) {\r\n\r\n }\r\n} \r\n \") ) \r\n\r\n }\r\n }\r\n; try text.write(to: path, atomically: false, encoding: String.Encoding.utf8)\r\n write_file cmdWriteFile:void (path:string file:string data:string) {\r\n templates {\r\n scala ( \"/* write_file not implemented */ \")\r\n csharp ( \"/* write_file not implemented */ \")\r\n\r\n swift3 (\"r_write_file(dirName: \" (e 1) \" + \\\"/\\\" + \" (e 2) \", dataToWrite: \" (e 3) \") \" \r\n\r\n(create_polyfill \"\r\nfunc r_write_file ( dirName:String, dataToWrite:String ) {\r\n do {\r\n let fileManager = FileManager.default\r\n let url = NSURL(fileURLWithPath: fileManager.currentDirectoryPath)\r\n let path = url.appendingPathComponent(dirName)\r\n try dataToWrite.write(to:path!, atomically: false, encoding: String.Encoding.utf8)\r\n } catch {\r\n\r\n }\r\n}\r\n \") \r\n \r\n ) \r\n cpp_old ( nl \"/* write file not yet implemented */\" nl)\r\n\r\n cpp ( \"r_cpp_write_file( \" (e 1) \" , \" (e 2) \" , \" (e 3) \" );\" nl (imp \"<iostream>\") (imp \"<string>\") (imp \"<fstream>\")\r\n(create_polyfill \"\r\nvoid r_cpp_write_file(std::string path, std::string filename, std::string text) \r\n{\r\n std::ofstream outputFile;\r\n outputFile.open(path + \\\"/\\\" + filename);\r\n outputFile << text;\r\n outputFile.close();\r\n} \r\n \") ) \r\n ranger ( nl \"write_file \" (e 1) \" \" (e 2) \" \" (e 3) nl)\r\n es6 (\"require(\\\"fs\\\").writeFileSync( \" \r\n (e 1) \" + \\\"/\\\" + \" (e 2) \", \" (e 3) \")\")\r\n\r\n php ( nl \"file_put_contents(\" (e 1) \".'/'.\" (e 2) \" , \" (e 3) \");\" nl )\r\n\r\n\r\n java7 ( nl \"writeFile(\" (e 1) \" + \\\"/\\\" + \" (e 2) \" , \" (e 3)\" );\" nl \r\n (imp \"java.io.PrintWriter\")\r\n(create_polyfill \"\r\nstatic void writeFile(String path, String text) \r\n{\r\n try{\r\n PrintWriter out = new PrintWriter( path);\r\n out.print( text );\r\n out.close();\r\n } catch ( FileNotFoundException e) {\r\n\r\n }\r\n} \r\n \") ) \r\n \r\n\r\n go ( \"r_write_text_file(\" (e 1) \", \" (e 2) \", \" (e 3) \")\"\r\n (imp \"os\")\r\n(create_polyfill\r\n\"\r\nfunc r_write_text_file(pathName string, fileName string, txtData string) {\r\n f, e := os.Create(pathName + \\\"/\\\" + fileName)\r\n if e != nil {\r\n panic(e)\r\n }\r\n defer f.Close()\r\n\r\n _ , err := f.WriteString(txtData)\r\n if err != nil {\r\n panic(err)\r\n }\r\n f.Sync()\r\n}\r\n\"\r\n) ) \r\n\r\n }\r\n }\r\n\r\n async_read_file _@(optional async):string (path:string filename:string) {\r\n templates {\r\n es6 ( \"await (new Promise(resolve => { require('fs').readFile( \" (e 1) \" + '/' + \" (e 2) \" , 'utf8', (err,data)=>{ resolve(data) }) } ))\" )\r\n }\r\n }\r\n\r\n read_file cmdReadFile@(optional async):string (path:string filename:string) {\r\n\r\n templates {\r\n es6 ( \"await (new Promise(resolve => { require('fs').readFile( \" (e 1) \" + '/' + \" (e 2) \" , 'utf8', (err,data)=>{ resolve(data) }) } ))\" )\r\n ranger ( \"(read_file \" (e 1) \" \" (e 2) \")\" )\r\n cpp ( \"r_cpp_readFile( \" (e 1) \" , \" (e 2) \")\" (imp \"<fstream>\")\r\n(create_polyfill \"\r\nstd::string r_cpp_readFile(std::string path, std::string filename) \r\n{\r\n std::ifstream ifs(path + \\\"/\\\" + filename);\r\n std::string content( (std::istreambuf_iterator<char>(ifs) ),\r\n (std::istreambuf_iterator<char>() ) );\r\n return content;\r\n} \r\n \") \r\n \r\n )\r\n php (\"file_get_contents(\" (e 1) \" . \\\"/\\\" . \" (e 2) \") \" )\r\n swift3 (\"r_read_file(dirName: \" (e 1) \" + \\\"/\\\" + \" (e 2) \") \" \r\n(create_polyfill \"\r\nfunc r_read_file ( dirName:String ) -> String? {\r\n let res: String?\r\n do {\r\n res = try String(contentsOfFile:dirName)\r\n } catch {\r\n res = nil\r\n }\r\n return res\r\n}\r\n \") \r\n )\r\n java7 ( \"readFile(\" (e 1) \" + \\\"/\\\" + \" (e 2) \" , StandardCharsets.UTF_8 )\" \r\n (imp \"java.nio.file.Paths\") \r\n (imp \"java.io.File\")\r\n (imp \"java.nio.file.Files\") \r\n (imp 'java.io.IOException')\r\n (imp \"java.nio.charset.Charset\")\r\n (imp \"java.nio.charset.StandardCharsets\")\r\n(create_polyfill \"\r\nstatic String readFile(String path, Charset encoding) \r\n{\r\n try {\r\n byte[] encoded = Files.readAllBytes(Paths.get(path));\r\n return new String(encoded, encoding);\r\n } catch(IOException e) { \r\n return \\\"\\\";\r\n }\r\n} \r\n \") \r\n \r\n )\r\n scala ( \"Try(Source.fromFile(\" (e 1) \" + \\\"/\\\" + \" (e 2) \").getLines.mkString).toOption\" (imp \"scala.io.Source\") (imp \"scala.util.Try\"))\r\n go ( \"r_io_read_file(\" (e 1) \", \" (e 2) \")\" (imp \"io/ioutil\")\r\n(create_polyfill \"\r\n\r\n// polyfill for reading files\r\nfunc r_io_read_file( path string , fileName string ) *GoNullable {\r\n res := new(GoNullable);\r\n if v, err := ioutil.ReadFile(path + \\\"/\\\" + fileName); err == nil {\r\n res.has_value = true\r\n res.value = string(v)\r\n } else {\r\n res.has_value = false\r\n }\r\n return res \r\n}\r\n\"))\r\n es6 ( \"(require('fs').readFileSync( \" (e 1) \" + '/' + \" (e 2) \" , 'utf8'))\" )\r\n }\r\n }\r\n\r\n = cmdAssign@(moves@( 2 1 ) ):void ( immutable_left@(immutable):T immutable_right@(immutable):T ) { \r\n templates { \r\n ranger ( nl (e 1) \" = \" (e 2) nl ) \r\n scala ( nl (e 1) \" = \" (e 2) nl ) \r\n go ( (custom _ ) ) \r\n * ( nl (e 1) \" = \" (e 2) \";\" nl ) \r\n } \r\n } \r\n \r\n = cmdAssign@(moves@( 2 1 ) ):void ( left:T right:T ) { \r\n templates { \r\n ranger ( nl (e 1) \" = \" (e 2) nl ) \r\n scala ( nl (e 1) \" = \" (e 2) nl ) \r\n go ( (custom _ ) ) \r\n * ( nl (e 1) \" = \" (e 2) \";\" nl ) \r\n } \r\n } \r\n\r\n \r\n\r\n\r\n = cmdAssign@(moves@( 2 1 ) ):void ( left@(optional):T right:T ) { \r\n templates { \r\n ranger ( nl (e 1) \" = \" (e 2) nl ) \r\n scala ( nl (e 1) \" = Some(\" (e 2) \")\" nl ) \r\n swift ( nl (e 1) \" = Optional(\" (e 2) \");\" nl ) \r\n java7 ( nl (e 1) \" = \" (e 2) \";\" nl ) \r\n go ( nl (goset 1) \".value = \" (e 2) \";\" nl nl (goset 1) \".has_value = true; /* detected as non-optional */\" nl ) \r\n cpp ( nl ( e 1) \" = \" (e 2) \";\" nl ) \r\n * ( nl (e 1) \" = \" (e 2) \";\" nl ) \r\n } \r\n } \r\n\r\n = cmdAssign@(moves@( 2 1 ) ):void ( left@(optional):T right@(optional):T ) { \r\n templates { \r\n ranger ( nl (e 1) \" = \" (e 2) nl ) \r\n scala ( nl (e 1) \" = \" (e 2) nl ) \r\n go ( nl (goset 1) \".value = \" (e 2) \".value;\" nl nl (goset 1) \".has_value = false; \" nl \r\n \"if \" (goset 1) \".value != nil {\" nl I (goset 1) \".has_value = true\" nl i \"}\" nl\r\n ) \r\n cpp ( nl ( e 1) \" = \" (e 2) \";\" nl ) \r\n java7 ( nl (e 1) \" = \" (e 2) \";\" nl ) \r\n * ( nl (e 1) \" = \" (e 2) \";\" nl ) \r\n } \r\n } \r\n\r\n empty cmdEmpty@(optional):T ( node@(ignore):T ) {\r\n templates {\r\n scala ( \"Option.empty[(\" (e 1) \")\" )\r\n swift3 ( \"nil\" )\r\n csharp ( \"(\" (typeof 1) \"?)\" (e 1) )\r\n cpp ( (e 1) )\r\n java7 ( \"Optional.of(\" (e 1 ) \")\")\r\n go ( (e 1 ) )\r\n * ( \"undefined\")\r\n }\r\n }\r\n\r\n wrap cmdWrap@(optional):T ( arg:T ) {\r\n templates {\r\n ranger ( \"( wrap \" (e 1) \")\" ) \r\n scala ( \"Some(\" (e 1) \")\" )\r\n swift3 ( \"Optional(\" (e 1) \")\" )\r\n csharp ( \"(\" (typeof 1) \"?)\" (e 1) )\r\n cpp ( (e 1) )\r\n java7 ( (e 1 ))\r\n go ( (e 1 ) )\r\n php ( (e 1 ) )\r\n * ( (e 1) )\r\n }\r\n }\r\n\r\n ! _:boolean ( arg:boolean ) {\r\n templates {\r\n * @macro(true) (`(false == (` (e 1)`))`)\r\n }\r\n }\r\n\r\n\r\n !! cmdUnwrap:T ( arg@(optional):T ) {\r\n templates {\r\n ranger ( \"( unwrap \" (e 1) \")\" )\r\n scala ( (e 1) \".get\" )\r\n csharp ( (e 1) \".Value\" )\r\n java7 ( (e 1) \".get()\" )\r\n rust ( (e 1) \".unwrap()\" )\r\n php ( (e 1 ) )\r\n kotlin ( (e 1) \"!!\" )\r\n swift3 ( (e 1) \"!\" )\r\n go ( (e 1) \".value.(\" (typeof 1) \")\" )\r\n cpp ( (e 1) )\r\n\r\n * ( (e 1) )\r\n }\r\n } \r\n\r\n unwrap cmdUnwrap:int ( arg@(optional):int ) {\r\n templates {\r\n cpp ( \"/*unwrap int*/\" (e 1) \".value\" )\r\n }\r\n } \r\n unwrap cmdUnwrap:double ( arg@(optional):double ) {\r\n templates {\r\n cpp ( \"/*unwrap dbl*/\" (e 1) \".value\" )\r\n }\r\n } \r\n\r\n unwrap cmdUnwrap:T ( arg@(optional):T ) {\r\n templates {\r\n ranger ( \"( unwrap \" (e 1) \")\" )\r\n scala ( (e 1) \".get\" )\r\n csharp ( (e 1) )\r\n java7 ( (e 1) )\r\n rust ( (e 1) \".unwrap()\" )\r\n php ( (e 1 ) )\r\n kotlin ( (e 1) \"!!\" )\r\n swift3 ( (e 1) \"!\" )\r\n go ( (e 1) \".value.(\" (typeof 1) \")\" )\r\n cpp ( (e 1) )\r\n\r\n * ( (e 1) )\r\n }\r\n }\r\n\r\n\r\n\r\n ; TODO: could be varname@(mutable), but the compiler may not be able to determine the\r\n ; mutability before the code has been processed through... \r\n\r\n def cmdDef:void ( varname:[T] ) { \r\n templates { \r\n * ( nl \"var \" (nameof 1) \" = [];\" nl )\r\n } \r\n } \r\n\r\n def cmdDef:void ( varname:[K:T] ) { \r\n templates { \r\n * ( nl \"var \" (nameof 1) \" = {};\" nl )\r\n } \r\n } \r\n\r\n\r\n def cmdDef:void ( varname:T ) { \r\n templates { \r\n scala@(mutable) ( nl \"var \" (e 1) \":\" (typeof 1 ) \" /* mutable uninitialized value */\" nl ) \r\n scala ( nl \"val \" (e 1) \":\" (typeof 1 ) \" /* immutable uninitialized value */\" nl ) \r\n java7 (nl (typeof 1) \" \" (e 1) \";\" nl) \r\n es6@(mutable) ( nl \"let \" (e 1) \";\" nl ) \r\n es5@(mutable) ( nl \"var \" (e 1) \";\" nl ) \r\n * ( nl \"const \" (e 1) \";\" nl ) \r\n } \r\n } \r\n\r\n def cmdDef:void ( varname:T value:T ) { \r\n templates { \r\n scala@(mutable) ( nl \"var \" (e 1) \":\" (typeof 1 )\" = \" (e 2) \" /* mutable value */\" nl ) \r\n scala ( nl \"val \" (e 1) \":\" (typeof 1 )\" = \" (e 2) \" /* immutable value */\" nl ) \r\n java7 (nl (typeof 1) \" \" (e 1) \" = \" (e 2) \";\" nl)\r\n es6@(mutable) ( nl \"let \" (e 1) \" = \" (e 2) \";\" nl )\r\n es6 ( nl \"const \" (e 1) \" = \" (e 2) \";\" nl )\r\n * ( nl \"var \" (e 1) \" = \" (e 2) \";\" nl )\r\n } \r\n } \r\n def cmdDef:void ( varname@(mutable):T value:T ) { \r\n templates { \r\n scala( nl \"var \" (e 1) \":\" (typeof 1 )\" = \" (e 2) \" /* mutable def value */\" nl ) \r\n java7 (nl (typeof 1) \" \" (e 1) \" = \" (e 2) \";\" nl)\r\n es6 ( nl \"let \" (e 1) \" = \" (e 2) \";\" nl )\r\n * ( nl \"var \" (e 1) \" = \" (e 2) \";\" nl )\r\n } \r\n } \r\n \r\n return cmdReturn@(returns@(1)):void ( value:T ) {\r\n templates {\r\n go ( (custom _) )\r\n }\r\n }\r\n\r\n return cmdReturn@(optional returns@(1)):void ( value@(optional):T ) {\r\n templates {\r\n java7 ( (custom _) )\r\n scala( (custom _) )\r\n ranger ( nl \"return \" (e 1) nl ) \r\n go ( (custom _) )\r\n * ( \"return \" (ifa 1 \";\") (e 1) (eif _) \";\" )\r\n }\r\n } \r\n \r\n return cmdReturn@(returns@(1)):void ( value:T ) {\r\n templates {\r\n ranger ( nl \"return \" (e 1) nl ) \r\n scala( (custom _ ) )\r\n go ( (custom _) )\r\n * ( \"return \" (ifa 1 \";\") (e 1) (eif _) \";\" )\r\n }\r\n } \r\n\r\n return cmdReturn@(returns):void ( ) {\r\n templates {\r\n cpp ( (custom _ ) )\r\n scala ( (custon _) )\r\n ranger ( nl \"return\" nl ) \r\n go ( (custom _) )\r\n * ( \"return;\" )\r\n }\r\n } \r\n \r\n\r\n = cmdAssign:void ( left@(optional):T right:T ) { \r\n templates {\r\n ranger ( nl (e 1) \" = \" (e 2) nl ) \r\n scala ( nl (e 1) \" = Some(\" (e 2) \" ) \" nl ) \r\n * ( nl (e 1) \" = \" (e 2) \";\" nl ) \r\n } \r\n } \r\n\r\n = cmdAssign:void ( left:T right@(optional):T ) { \r\n templates {\r\n ranger ( nl (e 1) \" = \" (e 2) nl ) \r\n swift3 ( nl (e 1) \" = Optional(\" (e 2) \")\" )\r\n \r\n scala ( nl (e 1) \" = \" (e 2) \".get /* scala optional assigment of values * / \" nl ) \r\n * ( nl (e 1) \" = \" (e 2) \";\" nl ) \r\n } \r\n } \r\n\r\n = cmdAssign:void ( left@(optional):T right@(optional):T ) { \r\n templates {\r\n ranger ( nl (e 1) \" = \" (e 2) nl ) \r\n scala ( nl (e 1) \" = \" (e 2) \" /* scala optional assigment of values * / \" nl ) \r\n * ( nl (e 1) \" = \" (e 2) \";\" nl ) \r\n } \r\n } \r\n \r\n\r\n ; numeric - operations\r\n - cmdMinusOp:double ( left:double right:double ) { templates { * ( (e 1) \" - \" (e 2) ) } } \r\n - cmdMinusOp:int ( left:int right:int ) { templates { * ( (e 1) \" - \" (e 2) ) } } \r\n\r\n ; numeric + operations\r\n + cmdPlusOp:double ( left:double right:double ) { templates { * ( (e 1) \" + \" (e 2) ) } }\r\n\r\n ; random tests, remove these later:\r\n + cmdUnwrappingPlusOp:int ( left:int right@(optional):int ) {\r\n \r\n code {\r\n return left + (unwrap right)\r\n }\r\n\r\n }\r\n\r\n + cmdPlusOp:int ( left:int right@(optional):int ) { \r\n templates { * ( (e 1) \" + \" (e 2) \"? /* optional add*/\" ) } \r\n }\r\n \r\n + cmdPlusOp:int ( left@(mutable):int right@(optional):int ) { \r\n templates { * ( (e 1) \" + \" (e 2) \"? /* optional add*/\" ) } \r\n }\r\n + cmdPlusOp:int ( left@(mutable):int right:int ) { templates { * ( (e 1) \" + \" (e 2) ) } }\r\n + cmdPlusOp:int ( left@(mutable):int right:int ) { templates { * ( (e 1) \" + \" (e 2) ) } }\r\n\r\n ; random tests end\r\n + cmdPlusOp:int ( left:int right:int ) { templates { * ( (e 1) \" + \" (e 2) ) } }\r\n\r\n ; string + operations\r\n + cmdPlusOp:string ( left:string right:enum ) { \r\n templates { \r\n go ( \"strings.Join([]string{ \" (e 1) \",strconv.FormatInt(\" (e 2) \", 10) }, \\\"\\\")\" (imp \"strings\") (imp \"strconv\"))\r\n swift3 ( (e 1) \" + String(\" (e 2)\")\" )\r\n rust ( \"[\" (e 1) \" , (\" (e 2)\".to_string()) ].join(\\\"\\\")\" )\r\n php ( (e 1) \" . \" (e 2) ) \r\n cpp ( (e 1 ) \" + std::to_string(\" (e 2) \")\")\r\n * ( (e 1) \" + \" (e 2) ) \r\n } \r\n }\r\n\r\n + cmdPlusOp:string ( left:string right:string ) { \r\n templates { \r\n go ( (e 1) \" + \" (e 2) ) \r\n go.v2 ( \"strings.Join([]string{ \" (e 1) \",\" (e 2) \" }, \\\"\\\")\" (imp \"strings\"))\r\n php ( (e 1) \" . \" (e 2) )\r\n * ( (e 1) \" + \" (e 2) ) \r\n } \r\n }\r\n \r\n + cmdPlusOp:string ( left:string right:double ) { \r\n templates { \r\n go ( \"strings.Join([]string{ \" (e 1) \",strconv.FormatFloat(\" (e 2) \",'f', 6, 64) }, \\\"\\\")\" (imp \"strings\") (imp \"strconv\"))\r\n rust ( \"[\" (e 1) \" , (\" (e 2)\".to_string()) ].join(\\\"\\\")\" )\r\n swift3 ( (e 1) \" + String(\" (e 2)\")\" )\r\n cpp ( (e 1 ) \" + std::to_string(\" (e 2) \")\")\r\n php ( (e 1) \" . \" (e 2) ) \r\n * ( (e 1) \" + \" (e 2) ) \r\n } \r\n }\r\n ; Go;\r\n ; strconv.Itoa\r\n + cmdPlusOp:string ( left:string right:int ) { \r\n templates { \r\n go ( \"strings.Join([]string{ \" (e 1) \",strconv.FormatInt(\" (e 2) \", 10) }, \\\"\\\")\" (imp \"strings\") (imp \"strconv\"))\r\n swift3 ( (e 1) \" + String(\" (e 2)\")\" )\r\n rust ( \"[\" (e 1) \" , (\" (e 2)\".to_string()) ].join(\\\"\\\")\" )\r\n cpp ( (e 1 ) \" + std::to_string(\" (e 2) \")\")\r\n php ( (e 1) \" . \" (e 2) ) \r\n * ( (e 1) \" + \" (e 2) ) \r\n } \r\n }\r\n\r\n % _:int (left:int right:int) {\r\n templates {\r\n * ( (e 1) \" % \" (e 2) )\r\n }\r\n }\r\n \r\n + cmdPlusOp:string ( left:double right:string ) { \r\n templates { \r\n * ( (e 1) \" + \" (e 2) ) \r\n php ( (e 1) \" . \" (e 2) ) \r\n rust ( \"[\" (e 1) \" , \" (e 2) \" ].join()\" )\r\n } \r\n }\r\n\r\n + cmdPlusOp:string ( left:int right:string ) { \r\n templates { * ( (e 1) \" + \" (e 2) ) \r\n php ( (e 1) \" . \" (e 2) ) \r\n } }\r\n\r\n\r\n * cmdMulOp:double ( left:double right:double ) { templates { * ( (e 1) \" * \" (e 2) ) } }\r\n * cmdMulOp:int ( left:int right:int ) { templates { * ( (e 1) \" * \" (e 2) ) } }\r\n\r\n / cmdDivOp:double ( left:double right:double ) { templates { * ( (e 1) \" / \" (e 2) ) } }\r\n / cmdDivOp:double ( left:int right:int ) { templates { * ( (e 1) \" / \" (e 2) ) } }\r\n\r\n ; optional string operator...\r\n || _:string ( left:string right:string ) @doc('selects the first string if length > 0, else the second...') { \r\n templates { \r\n ranger ( '(|| (' (e 1) ') (' (e 1) ') )')\r\n * @macro(true) ( '(? ( (strlen ' (e 1) ') > 0 ) (' (e 1) ') (' (e 2) ') )' ) \r\n } \r\n } \r\n \r\n\r\n ? cmdTernary:T ( condition:boolean left:T right:T ) { \r\n templates { \r\n ranger ( '(? '(e 1) ' ' (e 2)' ' (e 3) ' )')\r\n go ( '(func() ' (typeof 2) ' { if ' (e 1) ' { return ' (e 2) ' } else { return ' (e 3) '} }())' ) \r\n cpp ( '(' (e 1) \" ? \" (e 2) \" : \" (e 3) ')' ) \r\n scala ( '( if (' (e 1) \") \" (e 2) \" else \" (e 3) ')' ) \r\n * ( (e 1) \" ? \" (e 2) \" : \" (e 3) ) \r\n } \r\n }\r\n\r\n\r\n ?? elvis:T ( left@(optional):T right:T ) { \r\n templates { \r\n * @macro(true) ( '(? (!null? ' (e 1) ') (unwrap ' (e 1) ') ' (e 2) ')' ) \r\n } \r\n } \r\n\r\n = cmdAssign:void ( target:vref expr:expression ) {\r\n templates {\r\n ranger ( nl (e 1) \" = \" (e 2) nl ) \r\n go ( (custom _ ) )\r\n scala ( (e 1) \" = \" (e 2) ) ; <-- scala does not require ; here \r\n * ( (e 1) \" = \" (e 2) \";\" )\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n int2double cmdIntToDouble:double ( value:int ) { \r\n templates {\r\n ranger ( \"(int2double \" (e 1) \")\" ) \r\n * ( \"parseFloat(\" (e 1) \")\" ) \r\n } \r\n }\r\n\r\n gitdoc cmdGitDoc:void ( value:string ) { \r\n templates { \r\n * ( \"/* git doc */\" ) \r\n } \r\n }\r\n\r\n\r\n\r\n\r\n; TODO: add the rest ....(case (\"sin\" \"cos\" \"tan\" \"atan\" \"log\" \"abs\" \"acos\" \"asin\" \"floor\" \"round\" \"sqrt\")\r\n ;\"<cmath>\"\r\n\r\n ceil _:int ( value:double ) {\r\n templates {\r\n ranger ( \"(ceil \" (e 1) \")\" ) \r\n swift3 ( \"ceil(\" (e 1) \")\" (imp \"Foundation\")) \r\n cpp ( \"ceil(\" (e 1) \")\" (imp \"<cmath>\"))\r\n csharp ( \"Math.Ceil(\" (e 1) \")\" (imp \"System\")) \r\n go ( \"math.Ceil(\" (e 1) \")\" (imp \"math\")) \r\n php ( \"ceil(\" (e 1) \")\" ) \r\n rust ( \"\" (e 1) \".ceil()\" ) \r\n scala ( \"math.ceil(\" (e 1) \")\" (imp \"scala.math\")) \r\n java7 ( \"Math.ceil(\" (e 1) \")\" (imp \"java.lang.Math\"))\r\n * ( \"Math.ceil(\" (e 1) \")\")\r\n }\r\n }\r\n\r\n floor _:int ( value:double ) {\r\n templates {\r\n ranger ( \"(floor \" (e 1) \")\" ) \r\n swift3 ( \"floor(\" (e 1) \")\" (imp \"Foundation\")) \r\n cpp ( \"floor(\" (e 1) \")\" (imp \"<cmath>\"))\r\n csharp ( \"Math.Floor(\" (e 1) \")\" (imp \"System\")) \r\n go ( \"math.Floor(\" (e 1) \")\" (imp \"math\")) \r\n php ( \"floor(\" (e 1) \")\" ) \r\n rust ( \"\" (e 1) \".floor()\" ) \r\n scala ( \"math.floor(\" (e 1) \")\" (imp \"scala.math\")) \r\n java7 ( \"Math.floor(\" (e 1) \")\" (imp \"java.lang.Math\"))\r\n * ( \"Math.floor(\" (e 1) \")\")\r\n }\r\n }\r\n\r\n asin cmdCos:double ( value:double ) {\r\n templates {\r\n ranger ( \"(asin \" (e 1) \")\" ) \r\n swift3 ( \"asin(\" (e 1) \")\" (imp \"Foundation\")) \r\n cpp ( \"asin(\" (e 1) \")\" (imp \"<cmath>\"))\r\n csharp ( \"Math.Asin(\" (e 1) \")\" (imp \"System\")) \r\n go ( \"math.Asin(\" (e 1) \")\" (imp \"math\")) \r\n php ( \"asin(\" (e 1) \")\" ) \r\n rust ( \"\" (e 1) \".asin()\" ) \r\n scala ( \"math.asin(\" (e 1) \")\" (imp \"scala.math\")) \r\n java7 ( \"Math.asin(\" (e 1) \")\" (imp \"java.lang.Math\"))\r\n * ( \"Math.asin(\" (e 1) \")\")\r\n }\r\n }\r\n \r\n\r\n\r\n acos cmdCos:double ( value:double ) {\r\n templates {\r\n ranger ( \"(acos \" (e 1) \")\" ) \r\n swift3 ( \"acos(\" (e 1) \")\" (imp \"Foundation\")) \r\n cpp ( \"acos(\" (e 1) \")\" (imp \"<cmath>\"))\r\n csharp ( \"Math.Acos(\" (e 1) \")\" (imp \"System\")) \r\n go ( \"math.Acos(\" (e 1) \")\" (imp \"math\")) \r\n php ( \"acos(\" (e 1) \")\" ) \r\n rust ( \"\" (e 1) \".acos()\" ) \r\n scala ( \"math.acos(\" (e 1) \")\" (imp \"scala.math\")) \r\n java7 ( \"Math.acos(\" (e 1) \")\" (imp \"java.lang.Math\"))\r\n * ( \"Math.acos(\" (e 1) \")\")\r\n }\r\n }\r\n\r\n cos cmdCos:double ( value:double ) {\r\n templates {\r\n ranger ( \"(cos \" (e 1) \")\" )\r\n swift3 ( \"cos(\" (e 1) \")\" (imp \"Foundation\")) \r\n cpp ( \"cos(\" (e 1) \")\" (imp \"<cmath>\"))\r\n csharp ( \"Math.Cos(\" (e 1) \")\" (imp \"System\")) \r\n go ( \"math.Cos(\" (e 1) \")\" (imp \"math\")) \r\n php ( \"cos(\" (e 1) \")\" ) \r\n rust ( \"\" (e 1) \".cos()\" ) \r\n scala ( \"math.cos(\" (e 1) \")\" (imp \"scala.math\")) \r\n java7 ( \"Math.cos(\" (e 1) \")\" (imp \"java.lang.Math\"))\r\n * ( \"Math.cos(\" (e 1) \")\")\r\n }\r\n }\r\n \r\n sin cmdSin:double ( value:double ) {\r\n templates {\r\n ranger ( \"(sin \" (e 1) \")\" )\r\n swift3 ( \"sin(\" (e 1) \")\" (imp \"Foundation\")) \r\n cpp ( \"sin(\" (e 1) \")\" (imp \"<cmath>\"))\r\n csharp ( \"Math.Sin(\" (e 1) \")\" (imp \"System\")) \r\n go ( \"math.Sin(\" (e 1) \")\" (imp \"math\")) \r\n php ( \"sin(\" (e 1) \")\" ) \r\n rust ( \"\" (e 1) \".sin()\" ) \r\n scala ( \"math.sin(\" (e 1) \")\" (imp \"scala.math\")) \r\n java7 ( \"Math.sin(\" (e 1) \")\" (imp \"java.lang.Math\"))\r\n * ( \"Math.sin(\" (e 1) \")\")\r\n }\r\n }\r\n\r\n sqrt cmdSqrt:double ( value:double ) {\r\n templates {\r\n ranger ( \"(sqrt \" (e 1) \")\" )\r\n swift3 ( \"sqrt(\" (e 1) \")\" (imp \"Foundation\")) \r\n cpp ( \"sqrt(\" (e 1) \")\" (imp \"<cmath>\"))\r\n csharp ( \"Math.Sqrt(\" (e 1) \")\" (imp \"System\")) \r\n php ( \"sqrt(\" (e 1) \")\" ) \r\n go ( \"math.Sqrt(\" (e 1) \")\" (imp \"math\")) \r\n rust ( \"\" (e 1) \".sqrt()\" ) \r\n scala ( \"math.sqrt(\" (e 1) \")\" (imp \"scala.math\")) \r\n java7 ( \"Math.sqrt(\" (e 1) \")\" (imp \"java.lang.Math\"))\r\n rust ( (e 1) \".sqrt()\" )\r\n * ( \"Math.sqrt(\" (e 1) \")\")\r\n }\r\n } \r\n\r\n if cmdIf:void ( condition:boolean then_block:block else@(keyword) else_block:block ) {\r\n templates {\r\n * @macro(true) ('if (' (e 1) ' ) { ' (block 2)' } { '(block 4) ' }' )\r\n }\r\n } \r\n if! cmdIf:void ( condition:boolean then_block:block else@(keyword) else_block:block ) {\r\n templates {\r\n * @macro(true) ('if (false == (' (e 1) ' ) ) { ' (block 2)' } { '(block 4) ' }' )\r\n }\r\n } \r\n\r\n if! cmdIf:void ( condition:boolean then_block:block else_block:block ) {\r\n templates {\r\n * @macro(true) ('if (false == (' (e 1) ' ) ) { ' (block 2)' } { '(block 3) ' }' )\r\n }\r\n } \r\n\r\n if! cmdIf:void ( condition:boolean then_block:block ) {\r\n templates {\r\n * @macro(true) ('if (false == (' (e 1) ' ) ) { ' (block 2) ' } ' )\r\n }\r\n } \r\n \r\n\r\n if cmdIf:void ( condition:boolean then_block:block else_block:block ) {\r\n templates {\r\n ranger ( \"if (\" (e 1) \" ) {\" I nl (block 2) i nl \"}\" (ifa 3) \" {\" I nl (block 3) i \"}\" nl)\r\n rust ( \"if \" (e 1) \" {\" I nl (block 2) i nl \"}\" (ifa 3) \" else {\" I nl (block 3) i \"}\" nl)\r\n go ( \"if \" (e 1) \" {\" I nl (block 2) i nl \"}\" (ifa 3) \" else {\" I nl (block 3) i \"}\" nl)\r\n * ( \"if ( \" (e 1) \" ) {\" I nl (block 2) i nl \"}\" (ifa 3) \" else {\" I nl (block 3) i \"}\" nl)\r\n }\r\n } \r\n \r\n if cmdIf:void ( condition:boolean then_block:block ) {\r\n templates {\r\n ranger ( \"if (\" (e 1) \") {\" I nl (block 2) nl i \"}\" nl )\r\n rust ( \"if \" (e 1) \" {\" I nl (block 2) nl i \"}\" nl )\r\n go ( \"if \" (e 1) \" {\" I nl (block 2) nl i \"}\" nl )\r\n * ( \"if ( \" (e 1) \" ) {\" I nl (block 2) nl i \"}\" nl )\r\n }\r\n }\r\n\r\n if cmdIf:void ( condition@(optional):int then_block:block ) {\r\n templates {\r\n cpp ( \"if ( \" (e 1) \".has_value ) {\" nl I (block 2) i nl \"}\" nl )\r\n }\r\n } \r\n\r\n if cmdIf:void ( condition@(optional):double then_block:block ) {\r\n templates {\r\n cpp ( \"if ( \" (e 1) \".has_value ) {\" nl I (block 2) i nl \"}\" nl )\r\n }\r\n } \r\n\r\n if cmdIf:void ( condition@(optional):T then_block:block ) {\r\n templates {\r\n ranger ( \"if ( \" (e 1) \") ) {\" I nl (block 2) i nl \"} {\" nl I (block 3) i \"}\" nl)\r\n scala ( \"if ( \" (e 1) \".isDefined ) {\" nl I (block 2) i nl \"}\" nl )\r\n swift3 ( \"if ( \" (e 1) \" != nil ) {\" nl I (block 2) i nl \"}\" nl )\r\n kotlin ( \"if ( \" (e 1) \" != null ) {\" nl I (block 2) i nl \"}\" nl )\r\n java7 ( \"if ( \" (e 1) \".isPresent()) {\" nl I (block 2) i nl \"}\" nl )\r\n csharp ( \"if ( \" (e 1) \".HasValue) {\" nl I (block 2) i nl \"}\" nl )\r\n ; go ( \"\" (e 1 ) \" == nil \" ) \r\n ; is_some\r\n php ( \"if ( isset( \" (e 1) \" ) ) {\" nl I (block 2) i nl \"}\" nl )\r\n go ( \"if ( \" (e 1) \".has_value) {\" nl I (block 2) i nl \"}\" nl )\r\n cpp ( \"if ( \" (e 1) \" != NULL ) {\" nl I (block 2) i nl \"}\" nl )\r\n rust ( \"if \" (e 1) \".is_some() {\" nl I (block 2) i nl \"}\" nl )\r\n * ( \"if ( typeof(\" ( e 1 ) \") != \\\"undefined\\\" ) {\" nl I (block 2) i nl \"}\" nl )\r\n\r\n }\r\n }\r\n\r\n if cmdIf:void ( condition@(optional):T then_block:block else_block ) {\r\n templates {\r\n ranger ( \"if ( \" (e 1) \" ) {\" I nl (block 2) i nl \"} {\" nl I (block 3) i \"}\" nl)\r\n php ( \"if ( isset(\" (e 1) \") ) {\" I nl (block 2) i nl \"} else {\" nl I (block 3) i \"}\" nl)\r\n scala ( \"if ( \" (e 1) \".isDefined ) {\" I nl (block 2) i nl \"} else {\" nl I (block 3) i \"}\" nl)\r\n java7 ( \"if ( \" (e 1) \".isPresent() ) {\" I nl (block 2) i nl \"} else {\" nl I (block 3) i \"}\" nl)\r\n csharp ( \"if ( \" (e 1) \".HasValue ) {\" I nl (block 2) i nl \"} else {\" nl I (block 3) i \"}\" nl)\r\n kotlin ( \"if ( \" (e 1) \" != null ) {\" I nl (block 2) i nl \"} else {\" nl I (block 3) i \"}\" nl)\r\n rust ( \"if \" (e 1) \".is_some() {\" I nl (block 2) i nl \"} else {\" nl I (block 3) i \"}\" nl)\r\n swift3 ( \"if ( \" (e 1) \" != nil ) {\" I nl (block 2) i nl \"} else {\" nl I (block 3) i \"}\" nl)\r\n go ( \"if ( \" (e 1) \".has_value ) {\" I nl (block 2) i nl \"} else {\" nl I (block 3) i \"}\" nl)\r\n cpp ( \"if ( \" (e 1) \" != NULL ) {\" I nl (block 2) i nl \"} else {\" nl I (block 3) i \"}\" nl)\r\n * ( \"if ( typeof(\" ( e 1 ) \") != \\\"undefined\\\" ) {\" I nl (block 2) i nl \"} else {\" nl I (block 3) i \"}\" nl)\r\n }\r\n }\r\n switch cmdSwitch:void ( condition:char case_list:block ) {\r\n templates {\r\n go ( \"switch (int64(\" (e 1) \" )) { \" I (block 2) i \"}\" )\r\n }\r\n } \r\n\r\n switch cmdSwitch:void ( condition:T case_list:block ) {\r\n templates {\r\n swift3 ( (custom _ ) )\r\n }\r\n } \r\n\r\n switch cmdSwitch:void ( condition:int case_list:block ) {\r\n templates {\r\n scala ( (e 1) \" match { \" I (block 2) i \"}\" )\r\n kotlin ( \"when (\" (e 1) \") { \" I (block 2) i \"}\" )\r\n * ( \"switch (\" (e 1) \" ) { \" I (block 2) i \"}\" )\r\n }\r\n } \r\n\r\n case cmdCase:void ( condition:char case_block:block ) {\r\n templates {\r\n ranger ( nl \"case \" (e 1)\" { \" nl I (block 2) i nl \"}\" )\r\n scala ( nl \"case \" (e 1)\" => \" nl I (block 2) nl i )\r\n swift3 ( nl \"case \" (e 1)\" : \" nl I (block 2) nl i )\r\n java7 ( nl \"case \" (e 1)\" : \" nl I (java_case 2) nl i )\r\n \r\n es6 ( nl \"case \" (e 1)\" : \" nl I (java_case 2) nl i )\r\n\r\n go ( nl \"case \" (e 1)\" : \" nl I (block 2) nl i )\r\n kotlin ( nl (e 1) \" -> {\" nl I (block 2) nl i \"}\" )\r\n cpp ( nl \"case \" (e 1)\" : \" nl I \"{\" nl I (block 2) nl \"break;\" i nl \"}\" i )\r\n * ( nl \"case \" (e 1)\" : \" nl I (block 2) nl \"break;\" i )\r\n }\r\n } \r\n\r\n case cmdCase:void ( condition:int case_block:block ) {\r\n templates {\r\n ranger ( nl \"case \" (e 1)\" { \" nl I (block 2) i nl \"}\" )\r\n scala ( nl \"case \" (e 1)\" => \" nl I (block 2) nl i )\r\n swift3 ( nl \"case \" (e 1)\" : \" nl I (block 2) nl i )\r\n java7 ( nl \"case \" (e 1)\" : \" nl I (java_case 2) nl i )\r\n go ( nl \"case \" (e 1)\" : \" nl I (block 2) nl i )\r\n kotlin ( nl (e 1) \" -> {\" nl I (block 2) nl i \"}\" )\r\n cpp ( nl \"case \" (e 1)\" : \" nl I \"{\" nl I (block 2) nl \"break;\" i nl \"}\" i )\r\n es6 ( nl \"case \" (e 1)\" : \" nl I (java_case 2) nl i )\r\n * ( nl \"case \" (e 1)\" : \" nl I (block 2) nl \"break;\" i )\r\n }\r\n } \r\n\r\n switch cmdSwitch:void ( condition:string case_list:block ) {\r\n templates {\r\n cpp ( (custom _) ) \r\n scala ( (e 1) \" match { \" I (block 2) i \"}\" )\r\n kotlin ( \"when (\" (e 1) \") { \" I (block 2) i \"}\" )\r\n * ( \"switch (\" (e 1) \" ) { \" I (block 2) i \"}\" )\r\n }\r\n } \r\n\r\n switch cmdSwitch:void ( condition:T case_list:block ) {\r\n templates {\r\n\r\n scala ( (e 1) \" match { \" I (block 2) i \"}\" )\r\n kotlin ( \"when (\" (e 1) \") { \" I (block 2) i \"}\" )\r\n * ( \"switch (\" (e 1) \" ) { \" I (block 2) i \"}\" )\r\n }\r\n } \r\n\r\n case cmdCase:void ( condition:T case_block:block ) {\r\n templates {\r\n ranger ( nl \"case \" (e 1)\" { \" nl I (block 2) i nl \"}\" )\r\n scala ( nl \"case \" (e 1)\" => \" nl I (block 2) nl i )\r\n swift3 ( nl \"case \" (e 1)\" : \" nl I (block 2) nl i )\r\n java7 ( nl \"case \" (e 1)\" : \" nl I (java_case 2) nl i )\r\n go ( nl \"case \" (e 1)\" : \" nl I (block 2) nl i )\r\n kotlin ( nl (e 1) \" -> {\" nl I (block 2) nl i \"}\" )\r\n es6 ( nl \"case \" (e 1)\" : \" nl I (java_case 2) nl i )\r\n cpp ( nl \"case \" (e 1)\" : \" nl I \"{\" nl I (block 2) nl \"break;\" i nl \"}\" i )\r\n * ( nl \"case \" (e 1)\" : \" nl I (block 2) nl \"break;\" i )\r\n }\r\n } \r\n\r\n default cmdDefault:void ( default_block:block ) {\r\n templates {\r\n ranger ( nl \"default { \" nl I (block 1) i nl \"}\" )\r\n scala ( nl \"case _ => \" nl I (block 1) nl i )\r\n go ( nl \"default: \" nl I (block 1) nl i )\r\n kotlin ( nl \"else -> { \" nl I (block 2) nl i \"}\" )\r\n java7 ( nl \"default: \" nl I (java_case 1) nl i )\r\n * ( nl \"default: \" nl I (block 1) nl \"break;\" i )\r\n }\r\n }\r\n \r\n\r\n\r\n break cmdBreak:void ( ) {\r\n templates {\r\n ranger ( nl \"break\" nl )\r\n scala ( nl \"__break__.break;\" nl )\r\n * ( nl \"break;\" nl )\r\n }\r\n }\r\n\r\n break cmdBreak:void ( _:T ) {\r\n templates {\r\n ranger ( nl \"break\" nl )\r\n scala ( nl \"__break__.break;\" nl )\r\n * ( nl \"break;\" nl )\r\n }\r\n }\r\n\r\n continue cmdContinue:void ( ) {\r\n templates {\r\n ranger ( nl \"continue \" nl )\r\n scala ( nl \"__continue__.break;\" nl )\r\n * ( nl \"continue;\" nl )\r\n }\r\n }\r\n \r\n continue cmdContinue:void ( _:T) {\r\n templates {\r\n ranger ( nl \"continue \" nl )\r\n scala ( nl \"__continue__.break;\" nl )\r\n * ( nl \"continue;\" nl )\r\n }\r\n }\r\n\r\n\r\n while cmdWhile:void ( condition@(loopcondition):boolean whileLoop@(loopblock):block ) {\r\n templates {\r\n go ( \"for \" (e 1) \" {\" I nl (block 2) nl i \"}\" )\r\n scala ( \r\n (forkctx _ ) (def 2) (def 3) \r\n \"try {\" nl I\r\n \"val __break__ = new Breaks;\" nl\r\n \"__break__.breakable { \" \r\n nl I \r\n \"while (\" (e 1) \") {\" nl\r\n I\r\n \"val __continue__ = new Breaks;\" nl\r\n \"__continue__.breakable {\" nl\r\n I nl (block 2) nl i \r\n \"}\" nl i\r\n \"}\"\r\n i nl\r\n \"}\" nl\r\n i nl \"} \" nl\r\n (imp \"scala.util.control._\")\r\n ) \r\n * ( \"while (\" (e 1) \") {\" nl I (block 2) i nl \"}\" )\r\n }\r\n }\r\n\r\n\r\n make cmdArrayLiteral:[T] ( typeDef@(ignore):[T] size:int repeatItem:T ) {\r\n templates {\r\n csharp ( \"new \" (typeof 1) \"( new \" (r_atype 1) \"[\" (e 2)\"])\")\r\n swift3 ( \"\" (typeof 1)\"(repeating:\" (e 3) \", count:\" (e 2) \")\" )\r\n ranger ( \"(make _:\" (typeof 1) \" \" (e 2) \")\" )\r\n go ( \"make(\" (typeof 1) \",\" (e 2) \")\" )\r\n cpp ( (typeof 1) \"(\" (e 2) \")\")\r\n ; new ArrayList<Double>( Arrays.asList( new Double[len_2] ) );\r\n java7 ( \"new \" (typeof 1) \"( Arrays.asList( new \" (r_atype 1) \"[\" (e 2) \"]))\")\r\n java7 ( \"new \" (typeof 1) \"(\" (e 2) \")\")\r\n es6 ( \"new Array(\" (e 2) \")\") \r\n * ( \"[\" (comma 2) \"]\")\r\n }\r\n }\r\n\r\n [] cmdArrayLiteral:[T] ( typeDef@(noeval):T listOf:expression ) {\r\n templates {\r\n ranger ( \"([] _:\" (typeof 1) \"(\" (list 2) \"))\")\r\n go ( \"[]\" (typeof 1) \"{\" (comma 2) \"}\")\r\n cpp ( \"r_make_vector_from_array( ( \" (typeof 1) \"[] ) {\" (comma 2) \"} )\"\r\n\r\n(create_polyfill \r\n\"template< typename T, size_t N >\r\nstd::vector<T> r_make_vector_from_array( const T (&data)[N] )\r\n{\r\n return std::vector<T>(data, data+N);\r\n}\") \r\n )\r\n scala( \"collection.mutable.ArrayBuffer(\" (comma 2) \")\")\r\n csharp ( \"new List<\" (typeof 1) \">{\" (comma 2) \"}\")\r\n java7 ( (imp \"java.util.*\") \"new ArrayList<\" (typeof 1) \">(Arrays.asList( new \" (typeof 1)\" [] {\" (comma 2) \"})) \" )\r\n * ( \"[\" (comma 2) \"]\")\r\n }\r\n }\r\n null? cmdIsNotNull:boolean ( arg@(optional):int ) {\r\n templates {\r\n cpp ((e 1) \".has_value == false\") \r\n }\r\n } \r\n null? cmdIsNotNull:boolean ( arg@(optional):double ) {\r\n templates {\r\n cpp ((e 1) \".has_value == false\") \r\n }\r\n } \r\n null? cmdIsNotNull:boolean ( arg@(optional):string ) {\r\n templates {\r\n cpp ((e 1) \".empty()\") \r\n }\r\n } \r\n\r\n null? cmdIsNull:boolean ( arg@(optional):T ) {\r\n templates {\r\n ranger (\"(null? \" (e 1) \")\")\r\n php ( \"(!isset(\" (e 1) \"))\") \r\n cpp ((e 1) \" == NULL\") \r\n swift3 ((e 1) \" == nil\") \r\n java7 ( (e 1) \" == null\") \r\n scala ((e 1) \".isDefined == false \") \r\n csharp ((e 1) \" == null \") \r\n rust ((e 1) \".is_null()\") \r\n go ( \"!\" (goset 1 ) \".has_value \" ) \r\n kotlin ((e 1) \"== null\") \r\n es6 ( \"typeof(\" ( e 1 ) \") === \\\"undefined\\\"\")\r\n * ((e 1) \"== null\")\r\n }\r\n } \r\n !null? cmdIsNotNull:boolean ( arg@(optional):int ) {\r\n templates {\r\n cpp ((e 1) \".has_value\") \r\n }\r\n } \r\n !null? cmdIsNotNull:boolean ( arg@(optional):double ) {\r\n templates {\r\n cpp ((e 1) \".has_value\") \r\n }\r\n } \r\n !null? cmdIsNotNull:boolean ( arg@(optional):string ) {\r\n templates {\r\n cpp ((e 1) \".empty() == false \") \r\n }\r\n } \r\n\r\n !null? cmdIsNotNull:boolean ( arg@(optional):T ) {\r\n templates {\r\n ranger (\"(!null? \" (e 1) \")\")\r\n php ( \"(isset(\" (e 1) \"))\")\r\n scala ((e 1) \".isDefined\") \r\n swift3 ((e 1) \" != nil \") \r\n cpp ((e 1) \" != NULL \") \r\n java7 ((e 1) \" != null \") \r\n csharp (\"\" (e 1) \" != null\")\r\n rust ((e 1) \".is_some()\") \r\n kotlin ((e 1) \" != null\") \r\n go ( (goset 1 ) \".has_value\" )\r\n * ('(typeof(' ( e 1 ) ') !== \"undefined\" && ' (e 1) ' != null ) ')\r\n }\r\n } \r\n\r\n error_msg _:string () {\r\n templates {\r\n ranger ( \"(error_msg )\")\r\n go ( \"\\\"\\\"\" )\r\n es6 ( \"( e.toString())\" )\r\n php ( \"( $e->getMessage())\" )\r\n java7 ( \"( e.getMessage())\" )\r\n cpp ( \" \\\"unspecified error\\\" \" )\r\n }\r\n }\r\n\r\n throw cmdThrow@(throws):void ( eInfo:string ) {\r\n templates {\r\n ranger ( nl \"throw \" (e 1) nl )\r\n go ( nl \"panic(\" (e 1) \")\" nl)\r\n php ( \"throw new Exception(\" (e 1) \");\")\r\n csharp ( \"throw new ConfigurationErrorsException(\" (e 1) \");\" (imp \"System.Configuration\"))\r\n java7 ( \"throw new IllegalArgumentException(\" (e 1) \");\")\r\n swift3 ( \r\n nl \"throw \" (e 1) \";\" nl \r\n(create_polyfill \r\n\"\r\nextension String: Error {}\r\n\"\r\n) \r\n )\r\n scala ( \"throw new customException(\" (e 1) \")\"\r\n\r\n(create_polyfill\r\n\"\r\ncase class customException(smth:String) extends Exception\r\n\") \r\n )\r\n * ( nl \"throw \" (e 1) \";\" nl )\r\n }\r\n }\r\n \r\n throw cmdThrow@(throws):void ( eInfo:T ) {\r\n templates {\r\n ranger ( nl \"throw \" (e 1) nl )\r\n * ( nl \"throw \" (e 1) \";\" nl )\r\n }\r\n } \r\n\r\n try cmdTry:void ( try_block@(try_block):block catch_block:block ) {\r\n templates {\r\n ranger ( nl \"try {\" nl I (block 1) i nl \"} {\" nl I (block 2) i nl \"}\" nl ) \r\n csharp ( nl \"try {\" nl I (block 1) i nl \"} catch( Exception e ) {\" nl I (block 2) i nl \"}\" nl ) \r\n php ( nl \"try {\" nl I (block 1) i nl \"} catch( Exception $e) {\" nl I (block 2) i nl \"}\" nl ) \r\n scala ( (custom _ ) )\r\n scala ( \r\n \r\n nl \"try {\" nl I (block 1) i nl \"} catch {\" nl\r\n I\r\n \"case rv:ScalaReturnValue => {\" nl I\r\n \"throw new ScalaReturnValue(rv.value)\" nl i\r\n \"}\" nl\r\n i\r\n nl I nl \"case e: Exception => {\" nl I (block 2) i nl \"}\" i nl \"}\" nl )\r\n java7 ( nl \"try {\" nl I (block 1) i nl \"} catch( Exception e) {\" nl I (block 2) i nl \"}\" nl (imp 'java.io.IOException') )\r\n go ( (custom _) )\r\n; go ( \"(func () { \" nl I \"defer func() {\" nl I \"if r:= recover(); r != nil {\" nl I (block 2) i nl \"}\" nl i \"}()\" nl (block 1) nl i \"})()\" nl ) ;\"\r\n ; with swift there is no do without try...\r\n swift3 ( \"do {\" nl I (block 1) i nl \"} catch { \" nl I (block 2) i nl \"}\" )\r\n cpp ( nl \"try {\" nl I (block 1) i nl \"} catch( ... ) {\" nl I (block 2) i nl \"}\" nl )\r\n * ( nl \"try {\" nl I (block 1) i nl \"} catch(e) {\" nl I (block 2) i nl \"}\" nl )\r\n }\r\n }\r\n \r\n\r\n ; T.name is a bit of a problem ?? \r\n for cmdFor@(newcontext):void ( list:[T] item@(define):T indexName@(define ignore):int repeat_block:block) {\r\n templates {\r\n ranger ( nl \"for \" (e 1) \" \" (e 2) \":\" (typeof 2) \" \" (e 3)\" {\" nl I (block 4) nl i \"}\" )\r\n swift3 ( (forkctx _ ) (def 2) (def 3) nl \"for ( \" (swift_rc 3) \" , \" (e 2) \" ) in \" (e 1) \".enumerated() {\" nl I (block 4) nl i \"}\" )\r\n kotlin ( (forkctx _ ) (def 2) (def 3) \"for ( \" (e 3) \" in \" (e 1) \".indices ) {\" nl I \"val \" (e 2) \" = \" (e 1) \"[\" (e 3) \"]\" nl (block 4) nl i \"}\" )\r\n\r\n rust ( (forkctx _ ) (def 2) (def 3) \"for (\" (e 3) \", \" (e 2) \" ) in \" (e 1) \".enumerate() {\" nl I (block 4) nl i \"}\" ) \r\n\r\n ; idea of go for macro implementation, not working yet... \r\n go_idea @macro(true) (nl \r\n \"def cnt:int 0\" nl\r\n \"def \" (e 3) \":int -1\" nl\r\n \"while (cnt < (array_length \" (e 1) \")) {\" nl I\r\n (e 3) \" = \" (e 3) \" + 1\" nl\r\n \" cnt = cnt + 1\" nl\r\n \"def \" (e 2) \":\" (typeof 2) \" (itemAt \" (e 1) \" (cnt - 1) );\" nl \r\n (block 4) nl\r\n i\r\n \"}\" nl\r\n )\r\n go ( (def 2) (def 3) \"var \" (e 3) \" int64 = 0; \" nl \"for ; \" (e 3) \" < int64(len(\" (e 1) \")) ; \" (e 3) \"++ {\" nl I nl (e 2) \" := \" (e 1) \"[\" (e 3) \"];\" nl (block 4) nl i \"}\" )\r\n\r\n php ( (forkctx _ ) (def 2) (def 3) \"for ( \" (e 3) \" = 0; \" (e 3) \" < count(\" (e 1) \"); \" (e 3) \"++) {\" nl I (e 2) \" = \" (e 1) \"[\" (e 3) \"];\" nl (block 4) nl i \"}\" )\r\n java7 ( (forkctx _ ) (def 2) (def 3) \"for ( int \" (e 3) \" = 0; \" (e 3) \" < \" (e 1) \".size(); \" (e 3) \"++) {\" nl I (typeof 2) \" \" (e 2) \" = \" (e 1) \".get(\" (e 3) \");\" nl (block 4) nl i \"}\" )\r\n csharp ( (forkctx _ ) (def 2) (def 3) \"for ( int \" (e 3) \" = 0; \" (e 3) \" < \" (e 1) \".Count; \" (e 3) \"++) {\" nl I (typeof 2) \" \" (e 2) \" = \" (e 1) \"[\" (e 3) \"];\" nl (block 4) nl i \"}\" )\r\n scala ( (custom _) ) \r\n cpp ( (forkctx _ ) (def 2) (def 3) \"for ( int \" (e 3) \" = 0; \" (e 3) \" != (int)(\" (e 1) \".size()); \" (e 3) \"++) {\" nl \r\n I (typeof 2) \" \" (e 2) \" = \" (e 1) \".at(\" (e 3) \");\" nl (block 4) nl i \"}\" ) \r\n cpp.old ( (forkctx _ ) (def 2) (def 3) \"for ( std::vector< \" (typeof 2) \">::size_type \" (e 3) \" = 0; \" (e 3) \" != \" (e 1) \".size(); \" (e 3) \"++) {\" nl \r\n I (typeof 2) \" \" (e 2) \" = \" (e 1) \".at(\" (e 3) \");\" nl (block 4) nl i \"}\" ) \r\n * ( (forkctx _ ) (def 2) (def 3) \"for ( let \" (e 3) \" = 0; \" (e 3) \" < \" (e 1) \".length; \" (e 3) \"++) {\" nl I \"var \" (e 2) \" = \" (e 1) \"[\" (e 3) \"];\" nl (block 4) nl i \"}\" )\r\n }\r\n }\r\n\r\n \r\n for cmdFor@(newcontext):void ( hash:[string:T] item@(define):T itemName@(define ignore):string repeat_block:block) {\r\n templates {\r\n es6 (\"for( var \" (e 3) \" in \" (e 1) \") {\" nl I \"if(\" (e 1) \".hasOwnProperty(\" (e 3) \")) {\" \r\n nl I \"var \" (e 2) \" = \" (e 1) \"[\" (e 3) \"] \" nl (block 4) \r\n nl i \"} }\"\r\n )\r\n }\r\n } \r\n\r\n for cmdFor@(newcontext):void ( hash:[string:T] itemName@(define ignore):string repeat_block:block) {\r\n templates {\r\n es6 (\"for( var \" (e 2) \" in \" (e 1) \") {\" nl I \"if(\" (e 1) \".hasOwnProperty(\" (e 2) \")) {\" \r\n nl I (block 3) \r\n nl i \"} \" nl i \"}\"\r\n )\r\n }\r\n } \r\n\r\n trim cmdTrim:string ( value:string ) { \r\n templates {\r\n ranger ( \"(trim \" (e 1 ) \")\") \r\n swift3 ( (e 1 ) \".trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)\" (imp \"Foundation\")) \r\n php ( \"trim(\" (e 1 ) \")\")\r\n cpp ( \"r_cpp_trim( \" (e 1) \")\" (imp \"<cctype>\") (imp \"<string>\") (imp \"<algorithm>\")\r\n(create_polyfill \"\r\ninline std::string r_cpp_trim(std::string &s) \r\n{\r\n auto wsfront=std::find_if_not(s.begin(),s.end(),[](int c){return std::isspace(c);});\r\n auto wsback=std::find_if_not(s.rbegin(),s.rend(),[](int c){return std::isspace(c);}).base();\r\n return (wsback<=wsfront ? std::string() : std::string(wsfront,wsback));\r\n} \r\n \") ) \r\n scala ( (e 1) \".trim\" )\r\n csharp ( (e 1) \".Trim()\" (imp \"System\"))\r\n go (\"strings.TrimSpace(\" (e 1) \")\" (imp \"strings\"))\r\n * ( (e 1) \".trim()\" )\r\n } \r\n } \r\n\r\n; wr.out (\").to[collection.mutable.ArrayBuffer]\" false\r\n; kotlin could use also something like: .split(Regex(\"(?<=[!?])|(?=[!?])\"))\r\n; swift : .components(separatedBy:\r\n strsplit cmdSplit:[string] ( strToSplit:string delimiter:string ) { \r\n templates {\r\n ranger ( \"( strsplit \" (e 1) \" \" (e 2) \" )\")\r\n ; TODO: C++ version, requires perhaps external lib to do it directly to vector<std::string>\r\n scala ( (e 1) \".split(\" (e 2) \").to[collection.mutable.ArrayBuffer]\") \r\n csharp ( \r\n(create_polyfill \r\n\"\r\n public static List<String> __Split( String str, String token ) {\r\n if( token.Length == 0 ) {\r\n List<String> res = new List<String>();\r\n foreach (Char c in str) {\r\n res.Append( c.ToString() );\r\n }\r\n return res;\r\n }\r\n return ( (List<String>)str.Split(token[0]).ToList() );\r\n }\r\n\r\n\"\r\n\r\n) \r\n \r\n \"__Split(\" (e 1) \", \" (e 2) \")\" (imp 'System.Linq'))\r\n swift3 ( (e 2) \".characters.count == 0 ? Array(\" (e 1) \".characters).map { String($0) } : \" (e 1) \".components( separatedBy : \" (e 2) \")\" (imp \"Foundation\"))\r\n java7( \"new ArrayList<String>(Arrays.asList(\" (e 1) \".split(\" (e 2) \")))\" )\r\n php ( \"strlen(\" (e 2) \") == 0 ? str_split(\" (e 1) \") : \" \"explode(\" (e 2) \", \" (e 1) \")\") \r\n go (\"strings.Split(\" (e 1) \", \" (e 2) \")\" (imp \"strings\"))\r\n\r\n cpp ( \"r_str_split( \" (e 1) \", \" (e 2) \")\" (imp \"<sstream>\") (imp \"<iterator>\")\r\n\r\n(create_polyfill\r\n\"\r\nstd::vector<std::string> r_str_split(std::string data, std::string token) {\r\n std::vector<std::string> output;\r\n size_t pos = std::string::npos; \r\n if(token.length() == 0) {\r\n for(std::string::iterator it = data.begin(); it != data.end(); ++it) {\r\n output.push_back( std::string( it, it + 1) );\r\n } \r\n return output;\r\n }\r\n do\r\n {\r\n pos = data.find(token);\r\n output.push_back(data.substr(0, pos));\r\n if (std::string::npos != pos)\r\n data = data.substr(pos + token.size());\r\n } while (std::string::npos != pos);\r\n return output;\r\n}\r\n\"\r\n) \r\n )\r\n\r\n * ( (e 1) \".split(\" (e 2) \")\")\r\n }\r\n }\r\n\r\n strlen cmdStrlen:int ( text:string ) { \r\n templates {\r\n ranger ( \"( strlen (\" (e 1 ) \"))\")\r\n cpp ( '(int)('(e 1) \".length())\") \r\n java7 ( (e 1) \".length()\") \r\n scala ( (e 1) \".length()\") \r\n swift3 ( (e 1) \".characters.count\") \r\n csharp ( (e 1) \".Length\")\r\n php ( \"strlen(\" (e 1) \")\") \r\n go ( \"int64(len(\" (e 1) \"))\") \r\n * ( (e 1) \".length\")\r\n }\r\n }\r\n\r\n ; String s = new String(a, 2, 4)\r\n \r\n ; C#\r\n ; Encoding.ASCII.GetString(bytes)\r\n ; System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);\r\n ; new List<string>(Source).GetRange(2, 2).ToArray();\r\n\r\n ; scala:\r\n ; new String(array.map(_.toChar)))\r\n ; array.slice()\r\n\r\n ; swift:\r\n ; String(data: Data(bytes: s[sp ..< i]) , encoding: .utf8)!\r\n\r\n substring cmdSubstring:string ( text:charbuffer start:int end:int ) { \r\n templates {\r\n ranger ( \"(substring \" (e 1) \" \" (e 2) \" \" (e 3) \")\") \r\n csharp ( \"Encoding.UTF.GetString(new List<byte>(\" (e 1) \").GetRange(\" (e 2) \", \" (e 3) \").toArray())\")\r\n scala ( \"new String(\" (e 1) \".slice(\" (e 2) \", \" (e 3) \").map(_.toChar) )\")\r\n java7 ( \"new String(\" (e 1) \",\" (e 2) \", \" (e 3) \" - \" (e 2) \" )\")\r\n swift3 ( \"String(data: Data(bytes:\" (e 1) \"[\" (e 2) \" ..< \" (e 3) \"]), encoding: .utf8)!\" (imp \"Foundation\"))\r\n kotlin ( \"String(\" (e 1) \",\" (e 2) \", \" (e 3) \" - \" (e 2) \" )\") \r\n go ( \"fmt.Sprintf(\\\"%s\\\", \" (e 1) \"[\" (e 2) \":\" (e 3) \"])\" \r\n (imp \"fmt\")\r\n )\r\n cpp ( \"std::string( \" (e 1) \" + \" (e 2) \", \" (e 3) \" - \" (e 2) \" )\")\r\n php ( \"substr(\" (e 1) \", \" (e 2) \", \" (e 3) \" - \" (e 2) \")\") \r\n * ( (e 1) \".substring(\" (e 2) \", \" (e 3) \" )\")\r\n }\r\n }\r\n\r\n to_string bufferToString:string ( text:charbuffer ) { \r\n templates { \r\n ranger ( \"(to_string \" (e 1) \")\")\r\n go ( \"string(\" (e 1) \")\" )\r\n * ( (e 1) )\r\n }\r\n } \r\n\r\n toString bufferToString:string ( text:charbuffer ) { \r\n templates { \r\n go ( \"string(\" (e 1) \")\" )\r\n * ( (e 1) )\r\n }\r\n } \r\n\r\n to_charbuffer cmdToCharBuffer:charbuffer ( text:string ) { \r\n templates {\r\n ranger ( \"(to_charbuffer \" (e 1) \")\") \r\n swift3 ( \"Array(\" (e 1) \".utf8)\" )\r\n scala ( (e 1) \".toCharArray.map(_.toByte)\")\r\n java7 ( (e 1) \".getBytes()\" )\r\n csharp ( \"Encoding.ASCII.GetBytes(\" (e 1) \")\")\r\n kotlin ( (e 1 ) \".toCharArray()\" )\r\n rust ( (e 1) \".into_bytes()\")\r\n cpp ( (e 1) \".c_str()\")\r\n php ( (e 1) )\r\n go(\"[]byte(\" (e 1) \")\")\r\n * ( (e 1) )\r\n }\r\n }\r\n\r\n to_int cmdToInt:int ( value:double ) { \r\n templates {\r\n ranger ( \"(to_int \" (e 1) \")\") \r\n csharp ( \"(int)\" (e 1 ) \"\" )\r\n swift3 ( \"Int(\" (e 1 ) \")\" )\r\n kotlin ( (e 1 ) \".toInt()\" )\r\n scala ( (e 1 ) \".toInt\" )\r\n rust ( (e 1 ) \" as i64 \" )\r\n go ( \"int64(\" (e 1) \")\")\r\n php ( \"floor(\" (e 1) \")\")\r\n java7 ( \"Double.valueOf(\" (e 1) \").intValue()\")\r\n cpp ( \"(int)floor( \" (e 1) \")\" (imp \"<math.h>\"))\r\n * ( \"Math.floor( \" (e 1) \")\" )\r\n }\r\n } \r\n\r\n to_int cmdToInt:int ( ch:char ) { \r\n templates {\r\n ranger ( \"(to_int \" (e 1) \")\") \r\n csharp ( \"(int)\" (e 1 ) \"\" )\r\n swift3 ( \"Int(\" (e 1 ) \")\" )\r\n kotlin ( (e 1 ) \".toInt()\" )\r\n scala ( (e 1 ) \".toInt\" )\r\n rust ( (e 1 ) \" as i64 \" )\r\n go ( \"int64(\" (e 1) \")\")\r\n php ( (e 1) )\r\n * ( (e 1) )\r\n }\r\n } \r\n \r\n to_int cmdToInt@(optional):int (txt:string) {\r\n templates {\r\n * @macro(true) (\"str2int(\" (e 1) \")\")\r\n }\r\n }\r\n\r\n ; Length\r\n length cmdLength:int ( buffer:charbuffer ) { \r\n templates {\r\n ranger ( \"(length \" (e 1) \")\") \r\n csharp ( (e 1 ) \".Length\" )\r\n kotlin ( (e 1 ) \".size\" )\r\n scala ( (e 1 ) \".length\" )\r\n swift3 ( (e 1 ) \".count\" )\r\n rust ( (e 1 ) \".len()\" )\r\n java7 ( (e 1 ) \".length\" )\r\n cpp( \"strlen( \" (e 1) \" )\" (imp \"<cstring>\"))\r\n go ( \"int64(len(\" (e 1 ) \"))\")\r\n php ( \"strlen(\" (e 1 ) \")\")\r\n * ( (e 1) \".length\" )\r\n }\r\n } \r\n\r\n substring _:string ( text:string position:int ) {\r\n templates {\r\n ramger ('(end ' (e 1) ' ' (e 2) ')' )\r\n * @macro(true) ('(substring '(e 1)' ' (e 2) ' (strlen ' (e 1) '))')\r\n } \r\n }\r\n\r\n max _:int (left:int right:int) {\r\n templates {\r\n * @macro(true) ('(? (' (e 1) ' < ' (e 2)' ) ' (e 2) ' ' (e 1) ')')\r\n }\r\n }\r\n\r\n\r\n at _:string ( text:string position:int ) { \r\n templates {\r\n ranger ( '(at ' (e 1) ' ' ( e 2 ) ')')\r\n cpp ( 'r_utf8_substr(' (e 1) ', ' (e 2) ', 1)'\r\n(create_polyfill '\r\nstd::string r_utf8_substr(const std::string& str, int start_i, int leng_i)\r\n{\r\n unsigned int start ((unsigned int)start_i);\r\n unsigned int leng ((unsigned int)leng_i);\r\n if (leng==0) { return \"\"; }\r\n unsigned int c, i, ix, q, min= (unsigned int) std::string::npos, max=(unsigned int)std::string::npos;\r\n for (q=0, i=0, ix=str.length(); i < ix; i++, q++)\r\n {\r\n if (q==start){ min=i; }\r\n if (q<=start+leng || leng==std::string::npos){ max=i; }\r\n c = (unsigned char) str[i];\r\n if(c<=127) i+=0;\r\n else if ((c & 0xE0) == 0xC0) i+=1;\r\n else if ((c & 0xF0) == 0xE0) i+=2;\r\n else if ((c & 0xF8) == 0xF0) i+=3;\r\n else return \"\"; //invalid utf8\r\n }\r\n if (q<=start+leng || leng==std::string::npos){ max=i; }\r\n if (min==std::string::npos || max==std::string::npos) { return \"\"; }\r\n return str.substr(min,max);\r\n}\r\n') \r\n \r\n ) \r\n csharp ( (e 1) \".Substring(\" (e 2) \", 1)\")\r\n php ( \"substr(\" (e 1) \", \" (e 2) \", 1)\") \r\n java7 ( (e 1) \".substring(\" (e 2) \", \" (e 2) \" + 1)\") \r\n kotlin ( (e 1) \".substring(\" (e 2) \", \" (e 2) \" + 1)\") \r\n scala ( (e 1) \"(\" (e 2) \")\") \r\n go ( (e 1) \"[\" (e 2) \": (\" (e 2) \" + 1)]\") \r\n\r\n swift3 ( (imp 'Foundation') (e 1) \"[\" (e 1) \".index(\" (e 1) \".startIndex, offsetBy:\" (e 2) \")..<\" (e 1) \".index(\" (e 1) \".startIndex, offsetBy:\" (e 2) \" + 1)]\" )\r\n \r\n ; swift3 ( 'Int( ( NSString(string: ' (e 1) ' ) ).character( at: ' (e 2) ' ) )')\r\n ; swift3 ( (imp 'Foundation') (e 1) '.substring(from: ' (e 1) '.index(' (e 1) '.startIndex, offsetBy: ' (e 2) ' + 1), to: ' (e 1) '.index(' (e 1) '.startIndex, offsetBy: ' (e 2) ' + 1))') \r\n * ( (e 1) '[' (e 2) ']')\r\n }\r\n } \r\n\r\n charAt cmdCharAt:int ( text:string position:int ) { \r\n templates {\r\n ranger ( \"(charAt \" (e 1) \" \" ( e 2 ) \")\")\r\n cpp ( (e 1) \".at(\" (e 2) \")\") \r\n csharp ( (e 1) \"[\" (e 2) \"]\")\r\n php ( \"ord(\" (e 1) \"[\" (e 2) \"])\") \r\n java7 ( \"(int)\" (e 1) \".charAt(\" (e 2) \")\") \r\n kotlin ( (e 1) \"[\" (e 2) \"]\") \r\n scala ( (e 1) \"(\" (e 2) \")\") \r\n go ( \"int64(\" (e 1) \"[\" (e 2) \"])\") \r\n swift3 ( \"Int( ( NSString(string: \" (e 1) \" ) ).character( at: \" (e 2) \" ) )\")\r\n swift3 ( \"Int( String( \" (e 1) \".characters[\" (e 1) \".index(\" (e 1) \".startIndex, offsetBy: \" (e 2) \")]))!\") \r\n * ( (e 1) \".charCodeAt(\" (e 2) \" )\")\r\n }\r\n } \r\n\r\n ; https://stackoverflow.com/questions/41690156/how-to-get-the-keys-as-string-array-from-map-in-go-lang\r\n ; https://stackoverflow.com/questions/110157/how-to-retrieve-all-keys-or-values-from-a-stdmap-and-put-them-into-a-vector\r\n keys _:[string] ( map:[string:T] ) {\r\n templates {\r\n ranger (\"(keys \" (e 1) \")\")\r\n java7 ( \"new ArrayList<>(\" (e 1) \".keySet())\")\r\n swift3 (\"Array(\" (e 1) \".keys)\")\r\n scala ( (e 1) \".keys.to[collection.mutable.ArrayBuffer]\")\r\n php (\"array_keys(\" (e 1) \")\")\r\n es6 ( \"Object.keys(\" (e 1) \")\")\r\n csharp ( \"new List<String>(\" (e 1) \".Keys)\")\r\n cpp (\r\n \"r_get_keys_of_map<\" (r_atype 1) \">(\" (e 1) \")\"\r\n(create_polyfill\r\n\"\r\ntemplate< typename T >\r\nstd::vector<std::string> r_get_keys_of_map( std::map<std::string, T> orig_map ) { \r\n std::vector<std::string> res;\r\n for(auto it = orig_map.begin(); it != orig_map.end(); ++it) {\r\n res.push_back(it->first);\r\n }\r\n return res;\r\n}\" (imp \"<string>\") (imp \"<vector>\") (imp \"<map>\")) \r\n \r\n\r\n )\r\n go (\"(func() []string {\" nl I\r\n \"keys := reflect.ValueOf(\" (e 1) \").MapKeys()\" nl\r\n \"strkeys := make([]string, len(keys))\" nl\r\n \"for i := 0; i < len(keys); i++ {\" nl I\r\n \"strkeys[i] = keys[i].String()\" nl i \"}\" nl\r\n \"return strkeys\" nl i \"})()\"\r\n (imp \"reflect\"))\r\n }\r\n } \r\n\r\n charAt cmdCharAt:char ( text:charbuffer position:int ) { \r\n templates {\r\n ranger ( \"(charAt \" (e 1) \" \" ( e 2 ) \")\")\r\n cpp ( (e 1) \"[\" (e 2) \"]\") \r\n csharp ( (e 1) \"[\" (e 2) \"]\")\r\n php ( \"ord(\" (e 1) \"[\" (e 2) \"])\") \r\n java7 ( (e 1) \"[\" (e 2) \"]\") \r\n kotlin ( (e 1) \"[\" (e 2) \"]\") \r\n scala ( (e 1) \"(\" (e 2) \")\") \r\n go ( (e 1) \"[\" (e 2) \"]\") \r\n swift3 ( (e 1) \"[\" (e 2) \"]\") \r\n * ( (e 1) \".charCodeAt(\" (e 2) \" )\")\r\n }\r\n }\r\n\r\n substring cmdSubstring:string ( text:string start:int end:int ) { \r\n templates {\r\n ranger ( '(substring ' (e 1) ' ' (e 2) ' ' (e 3) ')')\r\n cpp.old ( '' (e 1) '.substr(' (e 2) ', ' (e 3) ' - ' (e 2) ')' )\r\n cpp ( 'r_utf8_substr('(e 1) ', ' (e 2) ', ' (e 3) ' - ' (e 2) ')'\r\n(create_polyfill '\r\nstd::string r_utf8_substr(const std::string& str, int start_i, int leng_i)\r\n{\r\n unsigned int start ((unsigned int)start_i);\r\n unsigned int leng ((unsigned int)leng_i);\r\n if (leng==0) { return \"\"; }\r\n unsigned int c, i, ix, q, min= (unsigned int) std::string::npos, max=(unsigned int)std::string::npos;\r\n for (q=0, i=0, ix=str.length(); i < ix; i++, q++)\r\n {\r\n if (q==start){ min=i; }\r\n if (q<=start+leng || leng==std::string::npos){ max=i; }\r\n c = (unsigned char) str[i];\r\n if(c<=127) i+=0;\r\n else if ((c & 0xE0) == 0xC0) i+=1;\r\n else if ((c & 0xF0) == 0xE0) i+=2;\r\n else if ((c & 0xF8) == 0xF0) i+=3;\r\n else return \"\"; //invalid utf8\r\n }\r\n if (q<=start+leng || leng==std::string::npos){ max=i; }\r\n if (min==std::string::npos || max==std::string::npos) { return \"\"; }\r\n return str.substr(min,max);\r\n}\r\n') \r\n \r\n ) \r\n csharp ( (e 1) \".Substring(\" (e 2) \", \" (e 3) \" - \" (e 2) \" )\")\r\n php ( \"substr(\" (e 1) \", \" (e 2) \", \" (e 3) \" - \" (e 2) \")\") \r\n go ( (e 1) \"[\" (e 2) \":\" (e 3) \"]\") \r\n swift3 ( (e 1) \"[\" (e 1) \".index(\" (e 1) \".startIndex, offsetBy:\" (e 2) \")..<\" (e 1) \".index(\" (e 1) \".startIndex, offsetBy:\" (e 3) \")]\" )\r\n * ( (e 1) \".substring(\" (e 2) \", \" (e 3) \" )\")\r\n }\r\n }\r\n\r\n ;(charcode \"A\")\r\n charcode cmdCharcode:char ( text:string ) { \r\n templates {\r\n ranger ( \"(charcode \" (e 1) \")\")\r\n go ( \"[]byte(\" (e 1) \")[0]\" )\r\n cpp( (e 1) \".at(0)\")\r\n php ( \"ord(\" (e 1) \")\") \r\n java7 ( \"((\" (e 1) \".getBytes())[0])\") \r\n swift3 ( \"UInt8( ( NSString(string: \" (e 1) \" ) ).character( at: 0 ) )\" (imp \"Foundation\"))\r\n swift3 ( \"UInt8( String( \" (e 1) \".characters[\" (e 1) \".startIndex]))! \") \r\n * ( (e 1) \".charCodeAt(0)\" )\r\n }\r\n }\r\n\r\n ccode cmdCharCode:char ( text:string ) { \r\n templates {\r\n * ( (cc 1) )\r\n }\r\n }\r\n\r\n strfromcode cmdStrFromCode:string ( code:char ) { \r\n templates {\r\n ranger ( \"(strfromcode \" (e 1) \")\")\r\n csharp ( \"((char)\" (e 1) \").toString()\") \r\n java7 ( \"(new String( new char[] {\" (e 1) \" }))\") \r\n swift3 ( \"(String( Character( UnicodeScalar(\" (e 1) \" ) )))\") \r\n php ( \"chr(\" (e 1) \")\") \r\n scala ( \"(\" (e 1) \".toChar)\") \r\n go (\"string([] byte{byte(\" (e 1) \")})\") \r\n cpp ( \"std::string(1, char(\" (e 1) \"))\") \r\n * ( \"String.fromCharCode(\" (e 1) \")\")\r\n }\r\n }\r\n \r\n\r\n strfromcode cmdStrFromCode:string ( code:int ) { \r\n templates {\r\n ranger ( \"(strfromcode \" (e 1) \")\"))\r\n csharp ( \"((char)\" (e 1) \").toString()\") \r\n java7 ( \"(new String( Character.toChars(\" (e 1) \")))\") \r\n swift3 ( \"(String( Character( UnicodeScalar(\" (e 1) \" )! )))\") \r\n php ( \"chr(\" (e 1) \")\") \r\n scala ( \"(\" (e 1) \".toChar)\") \r\n go (\"string([] byte{byte(\" (e 1) \")})\") \r\n cpp ( \"std::string(1, char(\" (e 1) \"))\") \r\n * ( \"String.fromCharCode(\" (e 1) \")\")\r\n }\r\n }\r\n\r\n to_string _:string ( value:int ) { \r\n templates {\r\n ranger ( \"(to_int \" (e 1) \")\")\r\n cpp (\"std::to_string(\" (e 1) \")\" (imp \"<string>\"))\r\n java7 ( \"String.valueOf(\" (e 1) \" )\") \r\n php ( \"strval(\" (e 1) \")\") \r\n scala ( \"(\" (e 1) \".toString)\")\r\n go (\"strconv.FormatInt(\" (e 1) \", 10)\" (imp \"strconv\"))\r\n swift3 (\"String(\" (e 1) \")\") \r\n csharp ( (e 1) \".ToString()\" )\r\n * ( \"(\" (e 1) \".toString())\")\r\n }\r\n } \r\n\r\n to_string cmdIntToString:string ( value:int ) { \r\n templates {\r\n ranger ( \"(to_string \" (e 1) \")\")\r\n cpp (\"std::to_string(\" (e 1) \")\" (imp \"<string>\"))\r\n java7 ( \"String.valueOf(\" (e 1) \" )\") \r\n php ( \"strval(\" (e 1) \")\") \r\n scala ( \"(\" (e 1) \".toString)\")\r\n go (\"strconv.Itoa(\" (e 1) \")\" (imp \"strconv\"))\r\n swfit3 (\"String(\" (e 1) \")\") \r\n * ( \"(\" (e 1) \").toString()\")\r\n }\r\n } \r\n \r\n ; std::to_string(myDoubleVar);\r\n double2str cmdDoubleToString:string ( value:double ) { \r\n templates {\r\n ranger ( \"(double2str \" (e 1) \")\")\r\n cpp (\"std::to_string(\" (e 1) \")\" (imp \"<string>\"))\r\n java7 ( \"String.valueOf(\" (e 1) \" )\") \r\n php ( \"strval(\" (e 1) \")\") \r\n scala ( \"(\" (e 1) \".toString)\")\r\n go (\"strconv.FormatFloat(\" (e 1) \",'f', 6, 64)\" (imp \"strconv\"))\r\n swift3 (\"String(\" (e 1) \")\") \r\n * ( \"(\" (e 1) \".toString())\")\r\n }\r\n }\r\n\r\n to_string _:string ( value:double ) { \r\n templates {\r\n ranger ( \"(double2str \" (e 1) \")\")\r\n cpp (\"std::to_string(\" (e 1) \")\" (imp \"<string>\"))\r\n java7 ( \"String.valueOf(\" (e 1) \" )\") \r\n php ( \"strval(\" (e 1) \")\") \r\n scala ( \"(\" (e 1) \".toString)\")\r\n go (\"strconv.FormatFloat(\" (e 1) \",'f', 6, 64)\" (imp \"strconv\"))\r\n swift3 (\"String(\" (e 1) \")\") \r\n * ( \"(\" (e 1) \".toString())\")\r\n }\r\n }\r\n\r\n ; note: this has now different value, it is optional int...\r\n ; the optionality of the return value should be preserved \r\n ; can not do just\r\n ; def x:int (10 + (str2int \"hello\"))\r\n ; --> optional return value here...\r\n\r\n str2int cmdStringToInt@(optional):int ( value:string ) { \r\n templates {\r\n ranger ( \"(str2int \" (e 1) \")\")\r\n cpp (\"cpp_str_to_int(\" (e 1) \")\" (imp \"<string>\")\r\n \r\n(create_polyfill\r\n\"\r\ntemplate <class T>\r\nclass r_optional_primitive {\r\n public:\r\n bool has_value;\r\n T value;\r\n r_optional_primitive<T> & operator=(const r_optional_primitive<T> & rhs) {\r\n has_value = rhs.has_value;\r\n value = rhs.value;\r\n return *this;\r\n }\r\n r_optional_primitive<T> & operator=(const T a_value) {\r\n has_value = true;\r\n value = a_value;\r\n return *this;\r\n }\r\n};\r\n\"\r\n) \r\n(create_polyfill\r\n\"r_optional_primitive<int> cpp_str_to_int(std::string s) {\r\n r_optional_primitive<int> result;\r\n try {\r\n result.value = std::stoi(s);\r\n result.has_value = true;\r\n } catch (...) {\r\n \r\n }\r\n return result;\r\n}\"\r\n) \r\n \r\n )\r\n java7 ( \r\n \"_getIntegerOrNull(\" (e 1) \" )\"\r\n(create_polyfill \r\n\"\r\nstatic Integer _getIntegerOrNull ( String str ) {\r\n try {\r\n return (Integer.parseInt(str));\r\n } catch ( NumberFormatException e ) {\r\n return null;\r\n }\r\n}\r\n\"\r\n) \r\n )\r\n go (\"r_str_2_i64(\" (e 1) \")\"\r\n\r\n(create_polyfill\r\n\"\r\nfunc r_str_2_i64(s string) *GoNullable {\r\n res := new(GoNullable);\r\n if v, err := strconv.ParseInt(s, 10, 64); err == nil {\r\n res.has_value = true\r\n res.value = v\r\n } else {\r\n res.has_value = false\r\n }\r\n return res\r\n}\r\n\"\r\n) \r\n \r\n )\r\n php ( \"is_numeric(\" (e 1) \") ? intval(\" (e 1) \") : NULL \")\r\n scala ( \"Try(\" (e 1) \".toInt).toOption\" (imp \"scala.util.Try\"))\r\n kotlin ( (e 1) \".toInt()\")\r\n swift3 (\"Int(\" (e 1) \")\") \r\n csharp( \"Int32.Parse(\" (e 1) \")\" ) \r\n * ( \"isNaN( parseInt(\" (e 1) \") ) ? undefined : parseInt(\" (e 1) \")\")\r\n }\r\n }\r\n\r\n str2double cmdStringToDouble@(optional):double ( value:string ) { \r\n templates {\r\n ranger ( \"(str2double \" (e 1) \")\")\r\n cpp (\"cpp_str_to_double(\" (e 1) \")\" (imp \"<string>\")\r\n(create_polyfill\r\n\"\r\ntemplate <class T>\r\nclass r_optional_primitive {\r\n public:\r\n bool has_value;\r\n T value;\r\n r_optional_primitive<T> & operator=(const r_optional_primitive<T> & rhs) {\r\n has_value = rhs.has_value;\r\n value = rhs.value;\r\n return *this;\r\n }\r\n r_optional_primitive<T> & operator=(const T a_value) {\r\n has_value = true;\r\n value = a_value;\r\n return *this;\r\n }\r\n};\r\n\"\r\n) \r\n(create_polyfill\r\n\"r_optional_primitive<double> cpp_str_to_double(std::string s) {\r\n r_optional_primitive<double> result;\r\n try {\r\n result.value = std::stod(s);\r\n result.has_value = true;\r\n } catch (...) {\r\n \r\n }\r\n return result;\r\n}\"\r\n) \r\n \r\n )\r\n java7 ( \r\n \"_getDoubleOrNull(\" (e 1) \" )\"\r\n(create_polyfill \r\n\"\r\nDouble _getDoubleOrNull ( String str ) {\r\n try {\r\n return (Double.parseDouble(str));\r\n } catch ( NullPointerException e ) {\r\n return null;\r\n } catch ( NumberFormatException e ) {\r\n return null;\r\n }\r\n}\r\n\"\r\n) \r\n ) \r\n go (\"r_str_2_d64(\" (e 1) \")\"\r\n (imp \"strconv\")\r\n(create_polyfill\r\n\"func r_str_2_d64(s string) *GoNullable {\r\n res := new(GoNullable);\r\n if v, err := strconv.ParseFloat(s, 64); err == nil {\r\n res.has_value = true\r\n res.value = v\r\n } else {\r\n res.has_value = false\r\n }\r\n return res\r\n}\"\r\n) \r\n )\r\n php ( \"floatval(\" (e 1) \")\")\r\n scala ( \"Try(\" (e 1) \".toDouble).toOption\" (imp \"scala.util.Try\"))\r\n kotlin ( (e 1) \".toDouble()\")\r\n swift3 (\"Double(\" (e 1) \")\") \r\n * ( \"isNaN( parseFloat(\" (e 1) \") ) ? undefined : parseFloat(\" (e 1) \")\")\r\n }\r\n }\r\n\r\n to_double cmdToDbl@(optional):double (value:string) {\r\n templates {\r\n * @macro(true) (\"str2double(\" (e 1) \")\")\r\n }\r\n }\r\n \r\n ; scala: .mkString(\r\n join cmdJoin:string ( array:[string] delimiter:string ) { \r\n templates { \r\n ranger ( \"(join \" (e 1) \" \" (e 2) \")\") \r\n java7 ( \"joinStrings(\" (e 1 ) \", \" (e 2) \")\" \r\n (imp \"java.lang.StringBuilder\")\r\n(create_polyfill \"\r\nstatic String joinStrings(ArrayList<String> list, String delimiter) \r\n{\r\n StringBuilder b = new StringBuilder();\r\n for(int i=0; i < list.size() ; i++) {\r\n if( i > 0 ) {\r\n b.append(delimiter);\r\n }\r\n b.append(list.get(i));\r\n }\r\n return b.toString();\r\n} \r\n \") \r\n \r\n )\r\n\r\n cpp ( \"join( \" (e 1) \" , \" (e 2) \")\" (imp \"<sstream>\") (imp \"<string>\") (imp \"<iostream>\")\r\n(create_polyfill \"\r\ntemplate <typename T>\r\nstd::string join(const T& v, const std::string& delim) {\r\n std::ostringstream s;\r\n for (const auto& i : v) {\r\n if (&i != &v[0]) {\r\n s << delim;\r\n }\r\n s << i;\r\n }\r\n return s.str();\r\n} \r\n \") ) \r\n\r\n csharp ( \"String.Join(\" (e 2) \", \" (e 1) \")\" (imp \"System\"))\r\n go ( \"strings.Join(\" (e 1) \", \" (e 2) \")\")\r\n scala ( (e 1) \".mkString(\" (e 2) \")\" )\r\n php ( \"implode(\" (e 2) \", \" (e 1) \")\")\r\n swift3 ( (e 1) \".joined(separator:\" (e 2) \")\")\r\n * ( (e 1) \".join(\" (e 2) \")\" )\r\n } \r\n } \r\n \r\n has cmdHas:boolean ( map:[K:T] key:K ) { \r\n templates { \r\n ranger ( \"(has \" (e 1) \" \" (e 2) \")\") \r\n es5 ( \"typeof(\" (e 1) \"[\" (e 2) \"] ) != \\\"undefined\\\"\" )\r\n es6 ( \"( typeof(\" (e 1) \"[\" (e 2) \"] ) != \\\"undefined\\\" && \" (e 1) \".hasOwnProperty(\" (e 2) \") )\" )\r\n ts ( \"typeof(\" (e 1) \"[\" (e 2) \"] ) != \\\"undefined\\\"\" )\r\n flow ( \"typeof(\" (e 1) \"[\" (e 2) \"] ) != \\\"undefined\\\"\" )\r\n cpp ( (e 1) \".count(\" (e 2) \") > 0\" )\r\n php ( \"array_key_exists(\" (e 2) \" , \" (e 1) \" )\" )\r\n java7 ( (e 1) \".containsKey(\" (e 2) \")\" )\r\n kotlin ( (e 1) \".containsKey(\" (e 2) \")\" )\r\n go ( \r\n\r\n(macro (nl \"func r_has_key_\" (r_ktype 1) \"_\" (r_atype_fname 1) \"( a \" (typeof 1) \", key \" (r_ktype 1) \" ) bool { \" nl I \r\n \"_, ok := a[key]\" nl \"return ok\" nl i \"\r\n}\" nl )) \r\n \"r_has_key_\" (r_ktype 1) \"_\" (r_atype_fname 1) \"(\" (e 1) \", \" (e 2) \")\"\r\n )\r\n rust ( (e 1 ) \".contains_key(&\" (e 2) \")\")\r\n csharp ( (e 1) \".ContainsKey(\" (e 2) \")\" )\r\n scala ( (e 1) \".contains(\" (e 2) \")\" )\r\n swift3 ( (e 1) \"[\" (e 2) \"] != nil\" )\r\n * ( (e 1) \"[\" (e 2) \"] != null\" )\r\n } \r\n } \r\n\r\n get cmdGet@(optional):T ( a:[T] index:int ) {\r\n templates {\r\n es6 ('( ' (e 1) '.length > ' (e 2)' && ' (e 2)' >= 0 ? '(e 1) '[' (e 2)'] : null ) ')\r\n } \r\n }\r\n \r\n\r\n get cmdGet@(optional weak):int ( map:[K:int] key:K ) { \r\n templates {\r\n cpp( \"cpp_get_map_int_value<\" (r_ktype 1) \">(\" (e 1) \", \" (e 2) \")\"\r\n(create_polyfill\r\n\"\r\ntemplate <class T>\r\nclass r_optional_primitive {\r\n public:\r\n bool has_value;\r\n T value;\r\n r_optional_primitive<T> & operator=(const r_optional_primitive<T> & rhs) {\r\n has_value = rhs.has_value;\r\n value = rhs.value;\r\n return *this;\r\n }\r\n r_optional_primitive<T> & operator=(const T a_value) {\r\n has_value = true;\r\n value = a_value;\r\n return *this;\r\n }\r\n};\r\n\"\r\n) \r\n(macro\r\n(\"\r\ntemplate<typename T>\r\nr_optional_primitive<int> cpp_get_map_int_value( std::map<\" (r_ktype 1) \", int> m , \" (typeof 2) space \" key) {\r\n r_optional_primitive<int> result;\r\n try {\r\n result.value = m[key];\r\n result.has_value = true;\r\n } catch (...) {\r\n \r\n }\r\n return result;\r\n}\")\r\n) \r\n\r\n )\r\n }\r\n }\r\n \r\n get cmdGet@(optional weak):T ( map:[K:T] key:K ) { \r\n templates {\r\n ranger ( \"(get \" (e 1) \" \" (e 2) \")\") \r\n java7 ( (e 1) \".get(\" (e 2) \")\" )\r\n rust ( (e 1) \".get(\" (e 2) \")\" )\r\n\r\n scala ( (e 1) \".get(\" (e 2) \")\" )\r\n\r\n ; scala ( (e 1) \".get(\" (e 2) \").asInstanceOf[\" (atype 1) \"]\" )\r\n\r\n go ( \r\n\r\n(macro (nl \"func r_get_\" (r_ktype 1) \"_\" (r_atype_fname 1) \"( a \" (typeof 1) \", key \" (r_ktype 1) \" ) *GoNullable { \" nl I \r\n \"res := new(GoNullable)\" nl \r\n \"v, ok := a[key]\" nl \r\n \"if ok { \" nl\r\n I \r\n \"res.has_value = true\" nl\r\n \"res.value = v\" nl\r\n \"return res\" nl\r\n i\r\n \"}\" nl\r\n \"res.has_value = false\" nl\r\n \"return res\" nl\r\ni \"}\" nl )) \r\n \"r_get_\" (r_ktype 1) \"_\" (r_atype_fname 1) \"(\" (e 1) \", \" (e 2) \")\"\r\n ) \r\n * ( (e 1) \"[\" (e 2) \"]\" )\r\n } \r\n } \r\n\r\n set cmdSet@(moves@( 3 1 ) ):void ( array@(mutates):[T] index:int value@( refto@(1) ):T ) { \r\n templates {\r\n ranger ( \"set \" (e 1) \" \" (e 2) \" \" (e 3) ) \r\n java7 ( (e 1) \".set(\" (e 2) \", \" (e 3) \");\" )\r\n rust ( (e 1) \".insert(\" (e 2) \", \" (e 3) \");\" )\r\n scala ( (e 1) \"(\" (e 2) \") = \" (e 3) )\r\n kotlin ( (e 1) \".set(\" (e 2) \", \" (e 3) \")\" )\r\n php ( (e 1) \"[\" (e 2) \"] = \" (e 3) \";\" )\r\n cpp ( (e 1) \"[\" (e 2) \"] = \" (e 3) \";\" )\r\n ; * ( (e 1) \"[\" (e 2) \"] = \" (e 3) )\r\n * ( (e 1) \"[\" (e 2) \"] = \" (e 3) \";\" )\r\n } \r\n } \r\n \r\n set cmdSet@(moves@( 3 1 ) ):void ( map@(mutates):[K:T] key:K value@( refto@(1) ):T ) { \r\n templates {\r\n ranger ( \"set \" (e 1) \" \" (e 2) \" \" (e 3) ) \r\n java7 ( (e 1) \".put(\" (e 2) \", \" (e 3) \");\" )\r\n rust ( (e 1) \".insert(\" (e 2) \", \" (e 3) \");\" )\r\n scala ( (e 1) \".put(\" (e 2) \", \" (e 3) \")\" )\r\n kotlin ( (e 1) \".set(\" (e 2) \", \" (e 3) \")\" )\r\n php ( (e 1) \"[\" (e 2) \"] = \" (e 3) \";\" )\r\n cpp ( (e 1) \"[\" (e 2) \"] = \" (e 3) \";\" )\r\n * ( (e 1) \"[\" (e 2) \"] = \" (e 3) \";\" )\r\n } \r\n } \r\n\r\n lift cmdLift@(optional):T ( array:[T] index:int ) { \r\n templates {\r\n ranger ( \"(set \" (e 1) \" \" (e 2) \")\")\r\n cpp ( (e 1) \".at( \" (e 2) \")\" (imp \"<vector>\")) \r\n java7 ( (e 1) \".get(\" (e 2) \")\" ) \r\n ; lift return optional type => safer \r\n scala ( (e 1) \".lift(\" (e 2) \")\" ) \r\n swift3 ( (e 1) \"[\" (e 2) \"]\" ) \r\n * ( (e 1) \"[\" (e 2) \"]\" ) \r\n }\r\n }\r\n\r\n itemAt cmdItemAt@(weak):T ( array:[T] index:int ) { \r\n templates {\r\n ranger ( \"(itemAt \" (e 1) \" \" (e 2) \")\" )\r\n cpp ( (e 1) \".at(\" (e 2) \")\" (imp \"<vector>\")) \r\n java7 ( (e 1) \".get(\" (e 2) \")\" ) \r\n ; lift return optional type => safer \r\n scala ( (e 1) \"(\" (e 2) \")\" ) \r\n * ( (e 1) \"[\" (e 2) \"]\" ) \r\n }\r\n }\r\n\r\n indexOf cmdStringIndex:int (str:string key:string) {\r\n templates {\r\n php( \"strpos(\" (e 1) \", \" (e 2) \")\")\r\n go ( \"int64(strings.Index(\" (e 1) \", \" (e 2) \"))\" (imp \"strings\"))\r\n es6 ( (e 1) \".indexOf(\" (e 2 ) \")\" )\r\n java7 ( (e 1) \".indexOf(\" (e 2 ) \")\" )\r\n cpp (\r\n \"r_string_index_of(\" (e 1) \" , \" (e 2) \")\"\r\n(create_polyfill\r\n\"\r\nint r_string_index_of( std::string str, std::string key ) { \r\n auto n = str.find( key );\r\n if (n == std::string::npos) {\r\n return -1;\r\n } \r\n return n;\r\n}\r\n\" ) \r\n \r\n )\r\n } \r\n }\r\n\r\n ; array function derived from scala\r\n\r\n indexOf cmdIndexOf:int ( array:[T] element:T ) { \r\n templates {\r\n ranger ( \"(indexOf \" (e 1) \" \" (e 2) \")\")\r\n cpp ( \"r_arr_index_of<\" (typeof 2) \">(\" (e 1) \", \" (e 2) \")\" (imp \"<vector>\") (imp \"<iterator>\") (imp \"<algorithm>\")\r\n\r\n(create_polyfill\r\n\"\r\ntemplate< typename T >\r\nint r_arr_index_of( std::vector<T> vec, T elem ) { \r\n auto it = std::find(vec.begin(),vec.end(),elem);\r\n if(it!=vec.end()) {\r\n return it - vec.begin();\r\n } \r\n return -1;\r\n}\r\n\" ) \r\n \r\n ) \r\n cpp ( \"std::distance( std::find( \" (e 1) \".begin(), \" (e 1) \".end(), \" (e 2) \") )\" (imp \"<vector>\") (imp \"<iterator>\")) \r\n rust ( (e 1) \".iter().position( |&r| r == \" (e 2) \" ).unwrap()\" ) \r\n php ( \"array_search(\" (e 2) \", \" (e 1) \", true)\")\r\n go ( \"r_indexof_arr_\" (rawtype 1) \"(\" (e 1) \", \" (e 2) \")\"\r\n(macro (\"func r_indexof_arr_\" (rawtype 1) \"( a []\" (ptr 1) (rawtype 1) \", item \" (ptr 1) (rawtype 1) \" ) ( int64 ) { \" nl I \r\n \"for i, v := range a {\" nl I \"if item == v { \" nl I \"return int64(i) \" nl i \" } \" nl i \" } \" nl i\r\n \"return -1\" nl\r\n\"}\" nl )) \r\n\r\n )\r\n swift3( \"r_index_of(arr:\" (e 1) \", elem:\" (e 2)\")\"\r\n(macro (\"\r\nfunc r_index_of ( arr:\" (typeof 1) \" , elem: \" (typeof 2) \") -> Int { \" nl I\r\n \"if let idx = arr.index(of: elem) { \" nl\r\n \" return idx \" nl\r\n \"} else { \" nl\r\n I \" return -1 \" nl i\r\n \"} \" nl\r\n i\r\n\"}\" nl ) ) \r\n )\r\n * ( (e 1) \".indexOf(\" (e 2) \")\" ) \r\n }\r\n }\r\n\r\n remove_index cmdRemoveIndex:void ( array:[T] index:int ) { \r\n templates {\r\n ranger ( \"(remove_index \" (e 1) \" \" (e 2) \")\")\r\n cpp ( (e 1) \".erase( \"(e 1)\".begin() + \" (e 2) \" );\")\r\n swift3 ( (e 1) \".remove(at:\" (e 2)\")\")\r\n php ( \"array_splice(\" (e 1) \", \" (e 2 )\", 1);\")\r\n kotlin ( (e 1) \".removeAt(\" (e 2) \")\" ) \r\n java7 ( (e 1) \".remove(\" (e 2) \")\" )\r\n scala ( (e 1) \".remove(\" (e 2) \")\" )\r\n go ( (e 1) \" = append(\" (e 1) \"[:\" (e 2) \"], \" (e 1) \"[\" (e 2) \"+1:]...)\" )\r\n * ( (e 1) \".splice(\" (e 2) \", 1).pop();\" ) \r\n }\r\n }\r\n\r\n ; https://github.com/golang/go/wiki/SliceTricks\r\n insert cmdInsert@(moves@( 2 1 ) ):void ( array@(mutates):[T] index:int item:T ) { \r\n templates {\r\n ranger ( nl \"insert \" (e 1) \" \" (e 2) \" \" (e 3) nl)\r\n es6 ( (e 1) \".splice(\" (e 2) \", 0, \" (e 3) \");\" ) \r\n cpp ( (e 1) \".insert(\" (e 1) \".begin() + \" (e 2) \", \" (e 3) \");\") \r\n go( (e 1 ) \" = append(\" (e 1) \"[:\" (e 2) \"], append(\" (typeof 1) \"{\" (e 3) \"}, \" (e 1) \"[\" (e 2) \":]...)...)\") \r\n php ( \"array_splice(\" (e 1) \", \" (e 2) \", 0, \" (e 3) \");\") \r\n\r\n }\r\n } \r\n \r\n remove cmdRemove@(moves@( 2 1 ) ):void ( array@(mutates):[T] index:int ) { \r\n templates {\r\n ranger ( nl \"remove \" (e 1) \" \" (e 2) nl)\r\n es6 ( (e 1) \".splice(\" (e 2) \", 1);\" ) \r\n }\r\n } \r\n\r\n push cmdPush@(moves@( 2 1 ) ):void ( array@(mutates):[T] item:T ) { \r\n templates {\r\n ranger ( nl \"push \" (e 1) \" \" (e 2) \"\" nl)\r\n cpp ( (e 1) \".push_back( \"(e 2)\" );\")\r\n swift3 ( (e 1) \".append(\" (e 2)\")\")\r\n php ( \"array_push(\" (e 1) \", \" (e 2 )\");\")\r\n java7 ( (e 1) \".add(\" (e 2) \");\" )\r\n go ( (custom _) )\r\n go ( (e 1) \" = append(\" (e 1) \",\" (e 2) \");\" )\r\n kotlin ( (e 1) \".add(\" (e 2) \");\" )\r\n csharp ( (e 1) \".Add(\" (e 2) \");\" ) \r\n scala ( (e 1) \".append(\" (e 2) \")\" )\r\n * ( (e 1) \".push(\" (e 2) \");\" ) \r\n }\r\n }\r\n\r\n ; think: how to release the strong array\r\n removeLast cmdRemoveLast:void ( array@(mutates):[T] ) { \r\n templates {\r\n ranger ( \"removeLast \" (e 1) \"\")\r\n cpp ( (e 1) \".pop_back();\")\r\n swift3 ( (e 1) \".removeLast();\")\r\n php ( \"array_pop(\" (e 1) \" );\")\r\n java7 ( (e 1) \".remove(\" (e 1) \".size() - 1);\" )\r\n csharp ( \"Array.Resize(ref \"(e 1) \", \" (e 1 )\".Length - 1);\" ) \r\n scala ( (e 1) \".remove(\" (e 1) \".length - 1)\" )\r\n go ( (custom _) )\r\n go ( (e 1) \"= \" (e 1)\"[:len(\" (e 1)\") - 1]\")\r\n * ( (e 1) \".pop();\" ) \r\n }\r\n }\r\n\r\n length cmdArrayLength:int ( array:[T] ) { \r\n templates {\r\n ranger ( \"(length \" (e 1) \")\")\r\n cpp ( (e 1) \".size()\" ) \r\n swift3 ( (e 1) \".count\")\r\n php ( \"count(\" (e 1) \")\")\r\n java7 ( (e 1) \".size()\" ) \r\n scala ( (e 1) \".length\" )\r\n kotlin ( (e 1) \".size\" ) \r\n * ( (e 1) \".length\" ) \r\n }\r\n }\r\n\r\n length cmdStrlen:int ( text:string ) { \r\n templates {\r\n ranger ( \"(length \" (e 1) \")\")\r\n cpp ( (e 1) \".length()\") \r\n java7 ( (e 1) \".length()\") \r\n scala ( (e 1) \".length()\") \r\n swift3 ( (e 1) \".characters.count\") \r\n csharp ( (e 1) \".Length\")\r\n rust ( (e 1 ) \".len()\" )\r\n go( \"int64(len([]rune(\" (e 1) \")))\")\r\n php ( \"strlen(\" (e 1) \")\") \r\n * ( (e 1) \".length\")\r\n }\r\n }\r\n clear _:void ( array:[T] ) { \r\n templates {\r\n ranger ( \"(clear \" (e 1) \")\")\r\n cpp ( (e 1) \".clear();\" ) \r\n swift3 ( (e 1) \".removeAll()\")\r\n php ( nl (e 1) \" = array();\" nl)\r\n java7 ( (e 1) \".clear();\" ) \r\n scala ( (e 1) \".clear()\" )\r\n go ( (e 1) \" = nil\" ) \r\n * ( (e 1) \".length = 0;\" nl ) \r\n }\r\n }\r\n\r\n has _:boolean ( array:[T] ) { \r\n templates {\r\n * @macro(true) ('( (array_length ' (e 1) ') > 0 )')\r\n }\r\n }\r\n\r\n last_index _:int ( array:[T] ) { \r\n templates {\r\n * @macro(true) ('(array_length ' (e 1) ') - 1')\r\n }\r\n }\r\n last _:T ( array:[T] ) { \r\n templates {\r\n * @macro(true) ('(itemAt ' ( e 1 ) ' ( (array_length ' (e 1) ') - 1) )')\r\n }\r\n }\r\n ; first character of the string\r\n first _:string ( str:string ) { \r\n templates {\r\n * @macro(true) ('(at ' (e 1) ' 0)')\r\n }\r\n }\r\n first _:T ( array:[T] ) { \r\n templates {\r\n * @macro(true) ('(itemAt ' ( e 1 ) ' 0 )')\r\n }\r\n }\r\n size _:int ( array:[T] ) { \r\n templates {\r\n * @macro(true) ('(array_length ' ( e 1 ) ' )')\r\n }\r\n }\r\n\r\n at _:T ( array:[T] index:int ) { \r\n templates {\r\n * @macro(true) ('(itemAt ' ( e 1 ) ' (' (e 2) ') )')\r\n }\r\n }\r\n\r\n ; go sort.slice...\r\n sort _:[T] ( array:[T] cb:(_:int (left:T right:T))) {\r\n templates {\r\n es6 ( (e 1) \".slice().sort(\" ( e 2) \")\")\r\n go ( \"(func(list \" (typeof 1) \") \" (typeof 1) \" {\" nl \r\n I \"sort.Slice(\" (e 1) \", func(i, j int) bool { \" nl\r\n I \"sortfn := \" (e 2) nl\r\n \"sortval := sortfn(\" (e 1)\"[i], \" (e 1)\"[j])\" nl\r\n \"return (sortval < 0)\" nl i\r\n \"})\" nl\r\n \"return list\" nl \r\n i \"}(\" (e 1) \"))\"\r\n (imp \"sort\"))\r\n } \r\n }\r\n\r\n reverse _:[T] (array:[T]) {\r\n templates {\r\n ranger ( '(reverse (' (e 1) '))')\r\n es6 ( (e 1) \".slice().reverse()\")\r\n } \r\n }\r\n\r\n array_length cmdArrayLength:int ( array:[T] ) { \r\n templates {\r\n ranger ( \"(array_length \" (e 1) \")\")\r\n cpp ( '(int)(' (e 1) \".size())\" ) \r\n swift3 ( (e 1) \".count\")\r\n php ( \"count(\" (e 1) \")\")\r\n java7 ( (e 1) \".size()\" ) \r\n scala ( (e 1) \".length\" )\r\n rust ( (e 1 ) \".len()\" )\r\n go ( \"int64(len(\" (e 1 ) \"))\" )\r\n kotlin ( (e 1) \".size\" ) \r\n csharp ( (e 1) \".Count\") \r\n * ( (e 1) \".length\" ) \r\n }\r\n }\r\n\r\n; vec.erase(vec.begin() + index);\r\n array_extract cmdArrayExtract@(strong):T ( array@(mutates):[T] position:int ) { \r\n templates {\r\n ranger ( \"(array_extract \" (e 1) \" \" (e 2) \")\")\r\n ; TODO: C++ version does not seem to have a clear functino to extrace element from std::vector\r\n swift3 ( (e 1) \".remove(at:\" (e 2)\")\")\r\n php ( \"array_splice(\" (e 1) \", \" (e 2 )\", 1)[0]\")\r\n go ( \"r_m_arr_\" (rawtype 1) \"_extract(\" (e 1) \", \" (e 2 )\")\"\r\n\r\n(macro (\"func r_m_arr_\" (rawtype 1) \"_extract( a \" (typeof 1) \", i int64 ) (\" (arraytype 1) \", \" (typeof 1) \" ) { \" nl I \r\n \"item := a[i]\" nl \"res := append(a[:i], a[(i+1):]...)\" nl \"return item, res \" nl i \"\r\n}\" nl )) \r\n \r\n )\r\n\r\n cpp ( \"r_m_arr_extract<\" (typeof 1) \">(\" (e 1) \", \" (e 2 )\")\"\r\n\r\n(create_polyfill\r\n\"template< typename T >\r\nauto r_m_arr_extract( T & a, int i ) { \r\n auto elem = a.at(i); \r\n a.erase(a.begin() + i);\r\n return elem;\r\n}\" ) \r\n \r\n ) \r\n kotlin ( (e 1) \".removeAt(\" (e 2) \")\" ) \r\n java7 ( \"_arr_extract(\" (e 1) \", \" (e 2) \")\" \r\n(create_polyfill\r\n\"\r\npublic <T> T _arr_extract( ArrayList<T> list, Integer i ) { \r\n T elem = list.get(i); \r\n list.remove(i);\r\n return elem;\r\n}\" ) \r\n \r\n )\r\n scala ( (e 1) \".remove(\" (e 2) \")\" )\r\n * ( (e 1) \".splice(\" (e 2) \", 1).pop()\" ) \r\n }\r\n }\r\n\r\n\r\n \r\n print cmdPrint:void ( text:string) { \r\n templates {\r\n ranger ( nl \"print \" (e 1) nl)\r\n cpp (ln \"std::cout << \" (e 1) \" << std::endl;\" nl (imp \"<iostream>\") (imp \"<string>\"))\r\n kotlin ( nl \"println( \" (e 1) \" )\" nl ) \r\n scala ( \"println( \" (e 1) \" )\" ) \r\n go ( nl \"fmt.Println( \" (e 1) \" )\" nl (imp \"fmt\") ) \r\n rust ( nl \"println!( \\\"{}\\\", \" (e 1) \" );\" nl ) \r\n java7 ( nl \"System.out.println(String.valueOf( \" (e 1) \" ) );\" nl (imp \"java.io.*\")) \r\n php ( nl \"echo( \" (e 1) \" . \\\"\\\\n\\\");\" nl ) \r\n csharp ( nl \"Console.WriteLine(\" (e 1) \");\" nl (imp \"System\"))\r\n swift3 ( nl \"print(\" (e 1) \")\" nl)\r\n * ( nl \"console.log(\" (e 1) \");\" nl) \r\n }\r\n }\r\n\r\n to_lowercase _:string (s:string) {\r\n templates {\r\n es6 ((e 1) '.toLowerCase()')\r\n }\r\n }\r\n to_uppercase _:string (s:string) {\r\n templates {\r\n swift3 ( (e 1) \".uppercased()\")\r\n scala ( (e 1 ) \".toUpperCase()\" )\r\n ranger (\"(to_uppercase \" (e 1) \")\")\r\n es6 ( (e 1) \".toUpperCase()\")\r\n java7 ( (e 1) \".toUpperCase()\")\r\n php( \"strtoupper(\" (e 1) \")\")\r\n csharp ( (e 1) \".ToUpper()\" )\r\n cpp ( \r\n \"r_cpp_str_to_uppercase(\" (e 1) \")\"\r\n (imp \"<algorithm>\")\r\n (imp \"<string>\")\r\n(create_polyfill \"\r\nstd::string r_cpp_str_to_uppercase(std::string original) \r\n{\r\n std::string str = original;\r\n std::transform(str.begin(), str.end(),str.begin(), ::toupper); \r\n return str;\r\n} \r\n \") \r\n\r\n )\r\n go ( \"strings.ToUpper(\" (e 1) \")\" (imp \"strings\"))\r\n }\r\n }\r\n\r\n ; ----------------------------------------------------------------------------------------------------------\r\n ; conversions\r\n\r\n\r\n to_double toDouble:double ( input:int ) {\r\n templates {\r\n ranger (\"( to_double \" (e 1) \" )\")\r\n go (\"float64( \" (e 1) \" )\")\r\n es6 ( (e 1) )\r\n swift3 (\"Double(\" (e 1) \")\")\r\n scala ( (e 1) '.toDouble')\r\n java7 (\"Double.valueOf(\" (e 1) \")\")\r\n cpp (\"(double)(\" (e 1) \")\")\r\n php ( (e 1) )\r\n }\r\n }\r\n\r\n to_int _:int (value:string) {\r\n templates {\r\n php (\"intvalue(\" (e 1)\")\")\r\n }\r\n }\r\n\r\n ; ----------------------------------------------------------------------------------------------------------\r\n\r\n == cmdEqual:boolean ( left:string right:string ) { \r\n templates { \r\n java7 ( (e 1) \".equals(\" (e 2) \")\" ) \r\n * ( (e 1) \" == \" (e 2) ) \r\n } \r\n }\r\n\r\n == cmdEqual:boolean ( left:T right:T ) { templates { * ( (e 1) \" == \" (e 2) ) } }\r\n == cmdEqual:boolean ( left:enum right:enum ) { templates { * ( (e 1) \" == \" (e 2) ) } }\r\n\r\n == cmdEqual:boolean ( left:int right:char ) { \r\n templates { \r\n go ( (e 1) \" == int64(\" (e 2) \")\" ) \r\n * ( (e 1) \" == \" (e 2) ) \r\n } \r\n }\r\n == cmdEqual:boolean ( left:char right:int ) { \r\n templates { \r\n go ( \"int64(\" (e 1) \") == \" (e 2) ) \r\n * ( (e 1) \" == \" (e 2) ) \r\n } \r\n }\r\n\r\n == cmdEqual:boolean ( left:int right:int ) { templates { * ( (e 1) \" == \" (e 2) ) } }\r\n == cmdEqual:boolean ( left:double right:double ) { templates { * ( (e 1) \" == \" (e 2) ) } }\r\n == cmdEqual:boolean ( left:boolean right:boolean ) { templates { * ( (e 1) \" == \" (e 2) ) } }\r\n \r\n \r\n > cmdGt:boolean ( left:double right:double ) { templates { * ( (e 1) \" > \" (e 2) ) } }\r\n > cmdGt:boolean ( left:int right:int ) { templates { * ( (e 1) \" > \" (e 2) ) } }\r\n\r\n ; ----------------------------------------------------------------------------------------------------------\r\n ; TODO: expression to cast the types comparing to character\r\n\r\n <= cmdLte:boolean ( left:char right:int ) { \r\n templates {\r\n go ( \"int64(\" (e 1) \") <= \" (e 2) \"\") \r\n * ( (e 1) \" <= \" (e 2) ) \r\n } \r\n }\r\n <= cmdLte:boolean ( left:int right:char ) { \r\n templates { \r\n go ( (e 1) \" <= int64(\" (e 2) \")\")\r\n * ( (e 1) \" <= \" (e 2) ) \r\n } \r\n }\r\n <= cmdLte:boolean ( left:char right:char ) { \r\n templates { * ( (e 1) \" <= \" (e 2) ) } \r\n }\r\n\r\n < cmdLt:boolean ( left:int right:char ) { \r\n templates {\r\n go ( (e 1) \" < int64(\" (e 2) \")\")\r\n * ( (e 1) \" < \" (e 2) ) \r\n } \r\n }\r\n\r\n < cmdLt:boolean ( left:char right:int ) { \r\n templates {\r\n go ( \"int64(\" (e 1) \") < \" (e 2) ) \r\n * ( (e 1) \" < \" (e 2) ) \r\n } \r\n }\r\n\r\n < cmdLt:boolean ( left:char right:char ) { \r\n templates { * ( (e 1) \" < \" (e 2) ) } \r\n }\r\n\r\n == cmdEq:boolean ( left:int right:char ) { \r\n templates { * ( (e 1) \" == \" (e 2) ) } \r\n }\r\n\r\n == cmdEq:boolean ( left:char right:int ) { \r\n templates { * ( (e 1) \" == \" (e 2) ) } \r\n }\r\n\r\n == cmdEq:boolean ( left:char right:char ) { \r\n templates { * ( (e 1) \" == \" (e 2) ) } \r\n }\r\n\r\n != cmdNeq:boolean ( left:string right:string ) { \r\n templates { \r\n java7 ( \"!\" (e 1) \".equals(\" (e 2) \")\") \r\n * ( (e 1) \" != \" (e 2) ) \r\n } \r\n } \r\n\r\n != cmdNeq:boolean ( left:int right:char ) { \r\n templates { \r\n go ( (e 1) \" != int64(\" (e 2) \")\" ) \r\n * ( (e 1) \" != \" (e 2) ) \r\n } \r\n }\r\n\r\n != cmdNeq:boolean ( left:char right:int ) { \r\n templates { \r\n go ( \"int64(\" (e 1) \") != \" (e 2) ) \r\n * ( (e 1) \" != \" (e 2) ) \r\n } \r\n }\r\n\r\n != cmdNeq:boolean ( left:char right:char ) { \r\n templates { * ( (e 1) \" != \" (e 2) ) } \r\n }\r\n\r\n\r\n != cmdNeq:boolean ( left:T right:T ) { \r\n templates { * ( (e 1) \" != \" (e 2) ) } \r\n }\r\n \r\n >= cmdGte:boolean ( left:int right:char ) { \r\n templates { * ( (e 1) \" >= \" (e 2) ) } \r\n }\r\n >= cmdGte:boolean ( left:char right:int ) { \r\n templates { \r\n go ( \"int64(\" (e 1) \") >= \" (e 2) ) \r\n * ( (e 1) \" >= \" (e 2) ) \r\n } \r\n }\r\n >= cmdGte:boolean ( left:char right:char ) { \r\n templates { * ( (e 1) \" >= \" (e 2) ) } \r\n }\r\n \r\n > cmdGt:boolean ( left:int right:char ) { \r\n templates { \r\n go ( (e 1) \" > int64(\" (e 2) \")\" )\r\n * ( (e 1) \" > \" (e 2) ) } \r\n }\r\n > cmdGt:boolean ( left:char right:int ) { \r\n templates { \r\n go ( \"int64(\" (e 1) \") > \" (e 2) ) \r\n * ( (e 1) \" > \" (e 2) ) } \r\n }\r\n > cmdGt:boolean ( left:char right:char ) { \r\n templates { * ( (e 1) \" > \" (e 2) ) } \r\n }\r\n\r\n ;------------------------------------------------------------------------------------------------------------\r\n\r\n < cmdLt:boolean ( left:int right:int ) { templates { * ( (e 1) \" < \" (e 2) ) } }\r\n < cmdLt:boolean ( left:double right:double ) { templates { * ( (e 1) \" < \" (e 2) ) } }\r\n\r\n <= cmdLte:boolean ( left:int right:int ) { templates { * ( (e 1) \" <= \" (e 2) ) } }\r\n <= cmdLte:boolean ( left:double right:double ) { templates { * ( (e 1) \" <= \" (e 2) ) } }\r\n\r\n >= cmdGte:boolean ( left:int right:int ) { templates { * ( (e 1) \" >= \" (e 2) ) } }\r\n >= cmdGte:boolean ( left:double right:double ) { templates { * ( (e 1) \" >= \" (e 2) ) } }\r\n\r\n ; optional testing\r\n && cmdLogicAnd:boolean ( left@(optional):T right@(optional):S ) { \r\n templates { \r\n ranger ( \"(\" (e 1) \" && \" (e 2) \")\" ) \r\n scala ( (e 1) \".isDefined && \" (e 2) \".isDefined\") \r\n csharp ( (e 1) \".HasValue && \" (e 2) \".HasValue\") \r\n\r\n php ( \"isset(\"(e 1) \") && isset(\" (e 2) \")\") \r\n java7 ( (e 1) \".isPresent() && \" (e 2) \".isPresent()\") \r\n rust ( (e 1) \".is_some() && \" (e 2) \".is_some()\") \r\n swift3 ( (e 1) \" != nil && \" (e 2) \" != nil\") \r\n go ( \"\" (e 1) \".has_value && \" \"\" (e 2) \".has_value\")\r\n cpp ( \"\" (e 1) \"!= NULL && \" \"\" (e 2) \" != NULL\") \r\n kotlin ( (e 1) \" != null && \" (e 2) \" != null\") \r\n\r\n * ( \"typeof(\" ( e 1 ) \") != \\\"undefined\\\" && typeof(\" ( e 2 ) \") != \\\"undefined\\\"\" ) \r\n } \r\n }\r\n && cmdLogicAnd:boolean ( left:boolean right@(optional):S ) { \r\n templates {\r\n ranger ( \"(\" (e 1) \" && \" (e 2) \")\" ) \r\n php ( (e 1) \" && isset(\" (e 2) \")\") \r\n scala ( (e 1) \" && \" (e 2) \".isDefined\") \r\n java7 ( (e 1) \" && \" (e 2) \".isPresent()\") \r\n csharp ( (e 1) \" && \" (e 2) \"HasValue\") \r\n\r\n rust ( (e 1) \" && \" (e 2) \".is_some()\") \r\n swift3 ( (e 1) \" && \" (e 2) \" != nil\") \r\n go ( (e 1) \" && \" \"\" (e 2) \".has_value\") \r\n cpp ( (e 1) \" && \" \"\" (e 2) \"!= NULL \") \r\n kotlin ( (e 1) \" && \" (e 2) \" != null\") \r\n cpp (e 1) \" && \" (e 2) \r\n * ( (e 1) \" && \" \"typeof(\" ( e 2 ) \") != \\\"undefined\\\"\") \r\n } \r\n }\r\n && cmdLogicAnd:boolean ( left@(optional):T right:boolean ) { \r\n templates { \r\n ranger ( \"(\" (e 1) \" && \" (e 2) \")\" ) \r\n php ( \"isset(\"(e 1) \") && \" (e 2) ) \r\n scala ( \"\"(e 1) \".isDefined && \" (e 2) ) \r\n java7 ( \"\"(e 1) \".isPresent() && \" (e 2) ) \r\n csharp ( \"\"(e 1) \".HasValue && \" (e 2) ) \r\n\r\n rust ( \"\"(e 1) \".is_some() && \" (e 2) ) \r\n swift3 ( \"\"(e 1) \" != nil && \" (e 2) ) \r\n go ( \"\" (e 1) \".has_value && \" (e 2) ) \r\n cpp ( \"\" (e 1) \" != NULL && \" (e 2) ) \r\n kotlin ( \"\"(e 1) \" != null && \" (e 2) ) \r\n cpp (e 1) \" && \" (e 2) \r\n * ( \"typeof(\" ( e 1 ) \") != \\\"undefined\\\"\" \" && \" (e 2) ) \r\n } \r\n }\r\n\r\n\r\n\r\n && cmdLogicAnd:boolean ( left:boolean right:boolean ) { templates { * ( (e 1) \" && \" (e 2) ) } }\r\n && cmdLogicAnd:boolean ( p1:boolean p2:boolean p3:boolean) { templates { * ( (e 1) \" && \" (e 2) \" && \" (e 3) ) } }\r\n && cmdLogicAnd:boolean ( p1:boolean p2:boolean p3:boolean p4:boolean ) { templates { * ( (e 1) \" && \" (e 2) \" && \" (e 3) \" && \" (e 4) ) } }\r\n && cmdLogicAnd:boolean ( p1:boolean p2:boolean p3:boolean p4:boolean p5:boolean ) { templates { * ( (e 1) \" && \" (e 2) \" && \" (e 3) \" && \" (e 4) \" && \" (e 5) ) } }\r\n && cmdLogicAnd:boolean ( p1:boolean p2:boolean p3:boolean p4:boolean p5:boolean p6:boolean ) { templates { * ( (e 1) \" && \" (e 2) \" && \" (e 3) \" && \" (e 4) \" && \" (e 5) \" && \" (e 6) ) } }\r\n && cmdLogicAnd:boolean ( p1:boolean p2:boolean p3:boolean p4:boolean p5:boolean p6:boolean p7:boolean ) { templates { * ( (e 1) \" && \" (e 2) \" && \" (e 3) \" && \" (e 4) \" && \" (e 5) \" && \" (e 6) \" && \" (e 7) ) } }\r\n\r\n || cmdLogicOr:boolean ( left:boolean right:boolean ) { templates { * ( (e 1) \" || \" (e 2) ) } }\r\n || cmdLogicOr:boolean ( p1:boolean p2:boolean p3:boolean ) { templates { * ( (e 1) \" || \" (e 2) \" || \" (e 3) ) } }\r\n || cmdLogicOr:boolean ( p1:boolean p2:boolean p3:boolean p4:boolean ) { templates { * ( (e 1) \" || \" (e 2) \" || \" (e 3) \" || \" (e 4) ) } }\r\n || cmdLogicOr:boolean ( p1:boolean p2:boolean p3:boolean p4:boolean p5:boolean ) { templates { * ( (e 1) \" || \" (e 2) \" || \" (e 3) \" || \" (e 4) \" || \" (e 5) ) } } \r\n || cmdLogicOr:boolean ( p1:boolean p2:boolean p3:boolean p4:boolean p5:boolean p6:boolean ) { templates { * ( (e 1) \" || \" (e 2) \" || \" (e 3) \" || \" (e 4) \" || \" (e 5) \" || \" (e 6) ) } }\r\n\r\n\r\n }\r\n\r\n\r\n\r\n}\r\n","is_folder":false,"base64bin":false},{"name":"stdlib.clj","data":"\r\n; union type operators\r\n\r\nImport \"stdops.clj\"\r\nImport \"JSON.clj\"\r\n\r\noperators {\r\n\r\n cast _:S (arg:T target@(noeval):S) {\r\n templates {\r\n ranger (\"(cast \" (e 1) \" \" (e 2) \":\" (typeof 2) \" )\")\r\n es6 ( (e 1) )\r\n java7 ( \"((\" (typeof 2) \")\" (e 1) \")\" )\r\n swift3 ( (e 1) \" as \" (typeof 2) \"\" )\r\n cpp ( \"mpark::get<\" (typeof 2) \">(\" (e 1) \")\" \r\n \r\n (plugin 'makefile' ((dep 'variant.hpp' 'https://github.com/mpark/variant/releases/download/v1.2.2/variant.hpp'))) \r\n )\r\n go ( (e 1) \".(\" (typeof 2) \")\" )\r\n php ( (e 1) )\r\n }\r\n }\r\n\r\n cast _:Any (arg:T target@(noeval):Any) {\r\n templates {\r\n go ( (e 1) )\r\n }\r\n }\r\n\r\n case _@(newcontext):void ( arg@(union):T item2@(define):boolean code:block ) {\r\n templates {\r\n es6 (\r\n (forkctx _ ) (def 2) \"if( typeof(\" (e 1) \") === 'boolean' ) /* union case for boolean */ {\" nl I\r\n \"var \" (e 2) \" = \" (e 1) \";\" nl\r\n (block 3) \r\n nl i \"}\"\r\n ) \r\n }\r\n }\r\n case _@(newcontext):void ( arg@(union):T item2@(define):int code:block ) {\r\n templates {\r\n es6 (\r\n (forkctx _ ) (def 2) \"if( \" \"Number.isInteger ? Number.isInteger(\" (e 1) \") : (function(v) { return typeof v === 'number' && isFinite(v) && Math.floor(v) === v; })(\" (e 1) \")\" \" ) /* union case for int */ {\" nl I\r\n \"var \" (e 2) \" = \" (e 1) \";\" nl\r\n (block 3) \r\n nl i \"}\"\r\n ) \r\n php (\r\n (forkctx _ ) (def 2) \"if( is_int(\" (e 1) \") ) {\" nl I\r\n (e 2) \" = \" (e 1) \";\" nl\r\n (block 3) \r\n nl i \"}\"\r\n ) \r\n }\r\n }\r\n case _@(newcontext):void ( arg@(union):T item2@(define):double code:block ) {\r\n templates {\r\n es6 (\r\n (forkctx _ ) (def 2) \"if ( (function(v) { return typeof v === 'number' && isFinite(v); })(\" (e 1) \"))\" \" /* union case for double */ {\" nl I\r\n \"var \" (e 2) \" = \" (e 1) \";\" nl\r\n (block 3) \r\n nl i \"}\"\r\n ) \r\n php (\r\n (forkctx _ ) (def 2) \"if( is_double(\" (e 1) \") ) {\" nl I\r\n (e 2) \" = \" (e 1) \";\" nl\r\n (block 3) \r\n nl i \"}\"\r\n ) \r\n }\r\n }\r\n\r\n case _@(newcontext):void ( arg@(union):T item2@(define):string code:block ) {\r\n templates {\r\n es6 (\r\n (forkctx _ ) (def 2) \"if( typeof(\" (e 1) \") === 'string' ) /* union case for string */ {\" nl I\r\n \"var \" (e 2) \" = \" (e 1) \";\" nl\r\n (block 3) \r\n nl i \"}\"\r\n ) \r\n php (\r\n (forkctx _ ) (def 2) \"if( is_string(\" (e 1) \") ) {\" nl I\r\n (e 2) \" = \" (e 1) \";\" nl\r\n (block 3) \r\n nl i \"}\"\r\n )\r\n ranger ( 'case ' (e 1) \" \" (e 2) \":\" (typeof 2) \" {\" nl\r\n I (block 3) i nl \"}\" nl\r\n )\r\n }\r\n }\r\n case _@(newcontext):void ( arg@(union):T item@(define):T code:block ) {\r\n templates {\r\n ranger ( \"case \" (e 1) \" \" (e 2) \":\" (typeof 2) \" {\" nl\r\n I (block 3) i nl \"}\" nl\r\n )\r\n php (\r\n (forkctx _ ) (def 2) \"if( is_object(\" (e 1) \") && get_class(\" (e 1) \") == \\\"\" (typeof 2) \"\\\" ) /* union case */ {\" nl I\r\n (e 2) \" = \" (e 1) \";\" nl\r\n (block 3) \r\n nl i \"}\"\r\n ) \r\n es6 (\r\n (forkctx _ ) (def 2) \"if( \" (e 1) \" instanceof \" (typeof 2) \" ) /* union case */ {\" nl I\r\n \"var \" (e 2) \" = \" (e 1) \";\" nl\r\n (block 3)\r\n \r\n nl i \"}\"\r\n ) \r\n go (\r\n (forkctx _ ) (def 2) \"switch \" (e 1) \".(type) {\" nl I\r\n \"case \" (typeof 2) \":\" nl\r\n I nl\r\n \"var \" (e 2) \" \" (typeof 2) \" = \" (e 1) \".(\" (typeof 2) \");\" nl\r\n (block 3)\r\n i nl\r\n nl i \"}\"\r\n ) \r\n csharp (\r\n (forkctx _ ) (def 2) \"if( \" (e 1) \" is \" (typeof 2) \" ) {\" nl I\r\n (typeof 2) \" \" (e 2) \" = (\" (typeof 2) \")\" (e 1) \";\" nl\r\n (block 3)\r\n nl i \"}\"\r\n ) \r\n swift3 (\r\n (forkctx _ ) (def 2) \"if type(of: \" (e 1) \") == \" (typeof 2) \".self {\" nl I\r\n \"let \" (e 2) \" = \" (e 1) \" as! \" (typeof 2)\";\" nl\r\n (block 3)\r\n \r\n nl i \"}\"\r\n ) \r\n java7 (\r\n (forkctx _ ) (def 2) \"if( \" (e 1) \" instanceof \" (typeof 2) \") {\" nl I\r\n (typeof 2) \" \" (e 2) \" = (\" (typeof 2) \") \" (e 1) \";\" nl\r\n (block 3)\r\n \r\n nl i \"}\"\r\n ) \r\n cpp (\r\n (forkctx _ ) (def 2) \"if( mpark::holds_alternative<\" (typeof 2) \">(\" (e 1) \") ) {\" nl I\r\n (typeof 2) \" \" (e 2) \" = mpark::get<\" (typeof 2) \">(\" (e 1) \");\" nl\r\n (block 3)\r\n \r\n nl i \"}\"\r\n\r\n (plugin 'makefile' ((dep 'variant.hpp' 'https://github.com/mpark/variant/releases/download/v1.2.2/variant.hpp')))\r\n ) \r\n scala (\r\n (forkctx _ ) (def 2) (e 1) \" match {\" nl\r\n I \"case \" (e 2) \" : \" (typeof 2) \" => {\" nl I\r\n (block 3)\r\n nl i \"}\" nl\r\n \"case _ => {} \" nl i \r\n \"}\" nl\r\n ) \r\n \r\n }\r\n } \r\n to _:T ( to@(union noeval):T item:T) {\r\n templates {\r\n cpp.disabled ( \"(r_create_union<\" (typeof 1) \", \" (typeof 2)\">(\" (e 2) \"))\" \r\n(create_polyfill \r\n'\r\ntemplate<typename T, typename S>\r\nT r_create_union (S value) {\r\n T rv;\r\n rv = value;\r\n return rv;\r\n};\r\n'\r\n) \r\n )\r\n * ( (e 2) )\r\n }\r\n } \r\n}\r\n\r\n\r\noperator type:[string:T] all {\r\n fn forEach:void (cb:(_:void (item:T index:string )) ) {\r\n def list (keys self)\r\n for list kk:string i {\r\n def value (unwrap (get self kk))\r\n cb( value kk )\r\n }\r\n } \r\n fn forKeys:void (cb:(_:void (index:string))) {\r\n def list (keys self)\r\n for list it:string i {\r\n cb(it)\r\n }\r\n } \r\n}\r\n\r\n; commented out native ops, because they are not compatible with async operators\r\noperator type:[T] all {\r\n\r\n ; pure function or operator could be simply inlined...\r\n fn forEach@(pure):void (cb:(_:void (item:T index:int))) @doc('Call `fb` for each item in array') {\r\n for self it:T i {\r\n cb(it i)\r\n }\r\n } \r\n\r\n fn has:boolen ( el:T) {\r\n def idx (indexOf el)\r\n return (idx >= 0)\r\n }\r\n\r\n fn map:[T] (cb:(_:T (item:T index:int))) {\r\n def len (array_length self)\r\n def res:[T] \r\n for self it:T i {\r\n push res (cb(it i))\r\n }\r\n return res\r\n } \r\n\r\n fn map:[S] (cb:(_:S (item:T index:int)) to@(noeval):[S] ) {\r\n def len (array_length self)\r\n def res:[S] \r\n for self it:T i {\r\n push res (cb(it i))\r\n }\r\n return res\r\n } \r\n\r\n fn filter:[T] (cb:(_:boolean (item:T index:int))) {\r\n def res:[T]\r\n for self it:T i {\r\n if( cb(it i) ) {\r\n push res it\r\n }\r\n }\r\n return res\r\n } \r\n fn reduce@(weak):T (cb:(_:T (left:T right:T index:int)) initialValue:T) {\r\n def len (array_length self)\r\n def res:T initialValue\r\n if( len >= 1 ) {\r\n for self it:T i {\r\n res = ( cb ( res it i))\r\n }\r\n } \r\n return res\r\n } \r\n fn reduce@(weak):K (cb:(_:K (left:K right:T index:int)) initialValue:K) {\r\n def len (array_length self)\r\n def res initialValue\r\n if( len >= 1 ) {\r\n for self it:T i {\r\n res = ( cb ( res it i ))\r\n }\r\n } \r\n return res\r\n } \r\n\r\n fn groupBy:[T] ( cb:(_:string (item:T)) ) {\r\n def res:[T]\r\n def mapper:[string:boolean]\r\n for self it:T i {\r\n def key (cb(it))\r\n if( false == ( has mapper key ) ) {\r\n push res it\r\n set mapper key true\r\n } \r\n }\r\n return res\r\n }\r\n\r\n fn clone:[T] () {\r\n def res:[T]\r\n for self it:T i {\r\n push res it\r\n }\r\n return res\r\n }\r\n\r\n\r\n ; some useful functions from scala\r\n fn find@(optional):T (cb:(_:boolean (item:T))) {\r\n def res@(optional):T\r\n for self it@(lives):T i {\r\n if( cb(it) ) {\r\n def res2@(optional):T \r\n res2 = it\r\n return res2\r\n }\r\n }\r\n return res\r\n } \r\n\r\n fn count:int (cb:(_:boolean (item:T))) {\r\n def res 0 \r\n for self it@(lives):T i {\r\n if( cb(it) ) {\r\n res = res + 1\r\n }\r\n }\r\n return res\r\n } \r\n\r\n fn contains:boolean (cb:(_:boolean (item:T))) { \r\n for self it@(lives):T i {\r\n if( cb(it) ) {\r\n return true\r\n }\r\n }\r\n return false\r\n } \r\n\r\n\r\n}\r\n\r\n; immutable map type\r\ntrait Map @params( K T S ) {\r\n def elements@(weak):[K:T] \r\n}\r\n\r\ntrait Vector @params( T S ) {\r\n\r\n def start:int 0\r\n def cardinality 3\r\n def end:int 0\r\n def elements@(weak):[T]\r\n def parent@(weak):S\r\n\r\n ; inserting a new element inside the array\r\n ; you can re-use the arrays but the index ranges will change\r\n\r\n fn localCopy:S () {\r\n def obj (new S)\r\n obj.start = start\r\n obj.end = end\r\n obj.parent = this.parent\r\n obj.cardinality = cardinality\r\n obj.elements = elements\r\n return obj\r\n }\r\n\r\n fn set:S (idx:int item:T) {\r\n\r\n if( idx >= start ) {\r\n def res (this.localCopy())\r\n res.elements = (make _:[T] (res.cardinality) item)\r\n for elements e@(lives):T i {\r\n if ( (res.start + i) != idx ) {\r\n set res.elements i e\r\n } {\r\n set res.elements i item\r\n }\r\n }\r\n return res\r\n }\r\n def root (this.localCopy())\r\n def res root\r\n\r\n def p@(weak):S parent\r\n while( (!null? p) && (idx < p.start) ) {\r\n def newSlice@(lives) (p.localCopy())\r\n res.parent = newSlice\r\n res = newSlice\r\n if(!null? p.parent) {\r\n p = p.parent\r\n }\r\n }\r\n def newSlice@(lives) (p.localCopy())\r\n newSlice.elements = (make _:[T] (newSlice.cardinality) item)\r\n for p.elements e@(lives):T i {\r\n set newSlice.elements i e \r\n }\r\n set newSlice.elements (idx - newSlice.start) item \r\n res.parent = newSlice\r\n return root\r\n } \r\n\r\n fn insert:S (idx:int item:T) {\r\n if( idx >= start ) {\r\n def res (this.localCopy())\r\n def use_card cardinality\r\n if( ( array_length res.elements) >= (use_card - 1) ) {\r\n use_card = ( array_length res.elements) + 1\r\n }\r\n res.elements = (make _:[T] (use_card) item)\r\n for elements e@(lives):T i {\r\n if ( res.start + i < idx ) {\r\n set res.elements i e\r\n } {\r\n if( idx == ( res.start + i )) {\r\n set res.elements i item\r\n set res.elements (i + 1) e\r\n } {\r\n set res.elements (i + 1) e\r\n } \r\n }\r\n }\r\n if( (idx - start) >= (array_length elements)) {\r\n set res.elements (idx - start) item\r\n }\r\n res.start = start\r\n res.end = end + 1\r\n res.cardinality = use_card\r\n return res\r\n }\r\n def root (this.localCopy())\r\n def res root\r\n res.start = start + 1\r\n res.end = end + 1 \r\n def p@(weak):S parent\r\n while( (!null? p) && (idx < p.start) ) {\r\n def newSlice@(lives) (p.localCopy())\r\n newSlice.start = newSlice.start + 1\r\n newSlice.end = newSlice.end + 1\r\n res.parent = newSlice\r\n res = newSlice\r\n if(!null? p.parent) {\r\n p = p.parent\r\n }\r\n }\r\n\r\n def newSlice@(lives) (p.localCopy())\r\n def use_card newSlice.cardinality\r\n if( ( array_length p.elements) >= (use_card - 1) ) {\r\n use_card = ( array_length p.elements) + 1\r\n }\r\n newSlice.elements = (make _:[T] (use_card) item)\r\n for p.elements e@(lives):T i {\r\n if ( newSlice.start + i < idx ) {\r\n set newSlice.elements i e\r\n } {\r\n if( idx == ( newSlice.start + i )) {\r\n set newSlice.elements i item\r\n set newSlice.elements (i + 1) e\r\n } {\r\n set newSlice.elements (i + 1) e\r\n } \r\n } \r\n }\r\n \r\n newSlice.end = newSlice.end + 1\r\n newSlice.cardinality = use_card\r\n if ( (idx - newSlice.start) >= p.cardinality ) {\r\n newSlice.end = idx + 1\r\n }\r\n newSlice.parent = p.parent\r\n res.parent = newSlice\r\n return root\r\n }\r\n\r\n fn get:T (idx:int) {\r\n if( idx < 0 ) {\r\n ; should be runtime error here...\r\n return (itemAt elements 0)\r\n } \r\n if( idx >= start && idx < end ) {\r\n return (itemAt elements (idx - start))\r\n }\r\n def p@(weak):S parent\r\n while( (!null? p) && (idx < p.start) ) {\r\n p = p.parent\r\n }\r\n if(!null? p ) {\r\n return (itemAt p.elements (idx - p.start))\r\n }\r\n return (itemAt elements 0)\r\n } \r\n fn add:S (item:T) {\r\n if((end - start) >= cardinality) {\r\n def res (new S)\r\n res.start = this.end\r\n res.end = (this.end + 1)\r\n res.parent = this\r\n res.cardinality = (cardinality + 1)\r\n res.elements = (make _:[T] (res.cardinality) item)\r\n set res.elements 0 item\r\n return res\r\n }\r\n def res (new S)\r\n res.elements = (make _:[T] (cardinality) item)\r\n for elements e@(lives):T i {\r\n set res.elements i e\r\n }\r\n set res.elements (end - start) item\r\n res.parent = parent\r\n res.start = start\r\n res.end = end + 1\r\n res.cardinality = cardinality\r\n return res\r\n }\r\n\r\n fn count:int () {\r\n return end\r\n }\r\n\r\n ; TODO: create faster version which uses (make ) operator\r\n fn map:S (cb:(_:T (item:T)) ) {\r\n def res:S (new S)\r\n def cnt (this.count())\r\n def i 0\r\n while( i < cnt ) {\r\n def item (this.get(i))\r\n def new_value (cb(item))\r\n res = (res.add(new_value))\r\n i = i + 1\r\n }\r\n return res\r\n } \r\n}\r\n\r\n\r\noperator type:Vector all {\r\n\r\n; TODO: strict type checking for this\r\n; fn for (iIndex@(ignore):T iteIndex@(ignore):int code:block ) ( \r\n; \"def \" (e 3) \":int 0\" nl\r\n; \"def loop_cnt (\" (e 1) \".count())\" nl\r\n; \"while( \" (e 3) \" < loop_cnt ) {\" nl\r\n; I \r\n; \"def \" (e 2) \" (\" (e 1) \".get(\" (e 3) \"))\" nl\r\n; (block 4)\r\n; (e 3) \" = \" (e 3) \" + 1\" nl\r\n; i\r\n; \"}\" nl\r\n; )\r\n\r\n fn indexOf:int ( elem:T ) {\r\n def cnt (self.count())\r\n def i 0\r\n while( i < cnt ) {\r\n def item (itemAt self i)\r\n if(item == elem) {\r\n return i\r\n }\r\n i = i + 1\r\n } \r\n return -1\r\n }\r\n fn clear:T (idx:int) { \r\n ; def val (self.get(idx))\r\n return (new T)\r\n } \r\n\r\n fn itemAt:T (idx:int) { \r\n def val (self.get(idx))\r\n return val\r\n } \r\n fn push:S (item:T) {\r\n return (self.add(item))\r\n }\r\n fn last:T () {\r\n return (itemAt self ((self.count()) - 1) )\r\n }\r\n fn array_length:int () {\r\n return (self.count())\r\n } \r\n fn length:int () {\r\n return (self.count())\r\n } \r\n fn forEach:void (cb:(_:void (item:T))) {\r\n def cnt (self.count())\r\n def i 0\r\n while( i < cnt ) {\r\n def item (itemAt self i)\r\n cb(item)\r\n i = i + 1\r\n }\r\n }\r\n\r\n fn forUntil:void (cb:(_:boolean (item:T))) {\r\n def cnt (self.count())\r\n def i 0\r\n while( i < cnt ) {\r\n def item (itemAt self i)\r\n if( (cb(item)) == false ) {\r\n return\r\n }\r\n i = i + 1\r\n }\r\n }\r\n\r\n fn map:S ( cb:(_:T (item:T)) ) {\r\n def res (new S) \r\n def cnt (self.count())\r\n def i 0\r\n while( i < cnt ) {\r\n def item (itemAt self i)\r\n def value (cb(item))\r\n res = res.add(value)\r\n i = i + 1\r\n }\r\n return res\r\n } \r\n\r\n ; TODO: faster version ....\r\n fn map:[K] (cb:(_:K (item:T)) to@(noeval):[K] ) {\r\n def res:[K] \r\n def cnt (self.count())\r\n def i 0\r\n while( i < cnt ) {\r\n def item (itemAt self i)\r\n push res (cb(item))\r\n i = i + 1\r\n }\r\n return res\r\n } \r\n\r\n\r\n}\r\n\r\noperator type:Map all {\r\n fn keys:[K] () {\r\n return (keys self.elements)\r\n }\r\n fn get@(optional):T (key:K) {\r\n return (get self.elements key)\r\n }\r\n fn has:boolean (key:K) {\r\n return (has self.elements key)\r\n }\r\n fn set:S (key:K value:T) {\r\n def c (new S) \r\n def keys ( keys self.elements)\r\n for keys k:string i {\r\n if(k==key) {\r\n\r\n } {\r\n set c.elements k (unwrap (get self.elements k))\r\n }\r\n }\r\n set c.elements key value\r\n return c\r\n }\r\n fn forEach@(weak):S ( cb:(_:void (item:T index:K)) ) {\r\n def keys (keys self.elements)\r\n for keys key:K i {\r\n cb( (unwrap (get self.elements key)) key )\r\n }\r\n return self\r\n }\r\n\r\n}\r\n\r\n\r\n","is_folder":false,"base64bin":false},{"name":"stdops.clj","data":"\r\noperators {\r\n ret _:[T] ( a:[T] ) {\r\n templates {\r\n * ( (e 1) )\r\n }\r\n }\r\n ret _:T ( a:T ) {\r\n templates {\r\n * ( (e 1) )\r\n }\r\n }\r\n}\r\n\r\ndefn Print (x) (print '' + x)\r\ndefn Print (x) (print x)\r\n\r\ndefn Range (from to) {\r\n def res:[int]\r\n def f from\r\n while ( f < to ) {\r\n push res f \r\n f = f + 1\r\n }\r\n ret res\r\n}\r\n\r\n\r\ndefn ForEach (list f) {\r\n def cnt (size list)\r\n def i 0\r\n while(i < cnt) {\r\n f (at list i) \r\n i = i + 1\r\n }\r\n}\r\n\r\n\r\ndefn Compose (f1 f2) (fn:? (x:?) {\r\n return (f1 ( (f2 (x) ) ) )\r\n})\r\n\r\ndefn Map ( list f ) {\r\n def cnt (size list)\r\n def res:[?] \r\n def i 0\r\n while(i < cnt) {\r\n def myItem (at list i)\r\n def item ( f myItem )\r\n push res item\r\n i = i + 1\r\n }\r\n ret res\r\n}\r\n\r\ndefn Reduce ( list theFn initial) {\r\n def cnt (size list)\r\n def acc@(weak temp) initial\r\n def i 0\r\n while (i < cnt) {\r\n def myItem (at list i)\r\n acc = ( theFn acc myItem )\r\n i = i + 1\r\n }\r\n ret acc\r\n}\r\n\r\ndefn Reduce ( list2 theFn initial) {\r\n def cnt (size list2)\r\n def acc@(weak temp) initial\r\n def i 0\r\n while (i < cnt) {\r\n def myItem (at list2 i)\r\n acc = ( theFn (acc myItem ) )\r\n i = i + 1\r\n }\r\n ret acc\r\n}\r\n\r\ndefn Filter ( list f ) {\r\n def cnt (size list)\r\n def res:[?] \r\n def i 0\r\n while(i < cnt) {\r\n def myItem (at list i)\r\n if( f myItem ) {\r\n push res myItem\r\n }\r\n i = i + 1\r\n }\r\n ret res\r\n}\r\n\r\ndefn Filter ( list f ) {\r\n def cnt (size list)\r\n def res:[?] \r\n def i 0\r\n while(i < cnt) {\r\n def myItem (at list i)\r\n if( f (myItem ) ) {\r\n push res myItem\r\n }\r\n i = i + 1\r\n }\r\n ret res\r\n}\r\n\r\ndefn Revert (list) {\r\n def cnt (size list)\r\n def i 0\r\n def end (cnt - 1)\r\n def res (clone list)\r\n while(i < end) {\r\n def v1 (at list i)\r\n def v2 (at list end)\r\n set res end v1\r\n set res i v2\r\n i = i + 1\r\n end = end - 1\r\n }\r\n ret res\r\n}\r\n\r\n\r\ndefn ForEach (list f) {\r\n def cnt (size list)\r\n def i 0\r\n while(i < cnt) {\r\n f ( (at list i) ) \r\n i = i + 1\r\n }\r\n}\r\n\r\ndefn ForEach (list f) {\r\n def keyList (keys list)\r\n def cnt (size keyList)\r\n def i 0\r\n while(i < cnt) {\r\n def k (at keyList i)\r\n f (unwrap (get list k))\r\n i = i + 1\r\n }\r\n}\r\n\r\ndefn ConCat (left right) {\r\n def results:[Any]\r\n forEach left {\r\n def tmp@(temp) item\r\n push results tmp\r\n }\r\n forEach right {\r\n def tmp@(temp) item\r\n push results tmp\r\n }\r\n ret results\r\n}\r\n\r\ndefn ShowAny (anyItem) {\r\n case anyItem str:string {\r\n print 'string: ' + str\r\n }\r\n case anyItem i:int {\r\n print \" int : \" + i\r\n }\r\n case anyItem b:boolean {\r\n print \" boolean : \" + (? b 'true' 'false')\r\n }\r\n}","is_folder":false,"base64bin":false},{"name":"Timers.clj","data":"; operators to get time from JavaScript\nsystemclass TimeIntervalID {\n es6 TimeInterval\n}\nsystemclass TimeOutID {\n es6 number\n java7 Thread\n swift3 setTimeoutClass\n go '*r_go_timer'\n}\noperators {\n clearInterval cmdClearInterval:void ( i:TimeIntervalID) {\n templates {\n es6 (\"clearInterval( \" (e 1) \")\")\n }\n }\n setInterval cmdInterval:TimeIntervalID (code:block ms:int) {\n templates {\n es6 (\"setInterval( () => {\" (block 1 ) \"} , \" (e 2) \")\")\n }\n }\n clearTimeout cmdClearInterval:void ( i:TimeOutID) {\n templates {\n es6 (\"clearTimeout(\" (e 1) \")\")\n java7 ( (e 1) \".interrupt();\" nl)\n swift3 ( (e 1) '.stop()' nl)\n cpp ()\n go ( (e 1) \".is_valid = false;\" nl)\n }\n }\n\n setTimeout cmdInterval:TimeOutID (ms:int code:block) {\n templates {\n go (\n \"r_setTimeout( \" (e 1) \", func() {\" nl I (block 2) i nl \" } )\"\n (imp \"time\")\n\n(create_polyfill '\ntype r_go_timer struct { \n is_valid bool \n}\nfunc r_setTimeout( ms int64, cb func() () ) *r_go_timer {\n o := new(r_go_timer)\n o.is_valid = true\n time.AfterFunc( time.Duration(ms)*time.Millisecond, func() () {\n if o.is_valid {\n cb() \n } \n })\n return o\n} \n') ) \n cpp ( 'setTimeout(' (e 1) ', [&](){' nl I (block 2) i nl '});' \n (imp '<future>')\n (imp '<chrono>')\n (imp '<thread>')\n(create_polyfill `\n\nvoid setTimeout(int milliseconds,std::function<void()> func)\n{ \n std::async(std::launch::async,[=]()\n { \n std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds)); \n func(); \n });\n};\n`)\n\n )\n\n test1_swift3 ( 'setTimeoutClass(ms: ' (e 1) ', callback: { () -> Void in ' nl I (block 2) i nl '})'\n (imp \"Foundation\")\n(create_polyfill '\nclass setTimeoutClass {\n var cb : (() -> Void)?\n init( ms:Int, callback : @escaping (() -> Void) ) { \n self.cb = callback\n self.cb!()\n }\n func call() {\n self.cb!()\n } \n func stop() {\n }\n} \n' )\n\n )\n\n\n swift3 ( 'setTimeoutClass(ms: ' (e 1) ', callback: { () -> Void in ' nl I (block 2) i nl '})'\n (imp \"Foundation\")\n(create_polyfill '\nclass setTimeoutClass {\n var timer = Timer()\n var cb : (() -> Void)?\n\tinit( ms:Int, callback : @escaping (() -> Void) ) { \n self.timer = Timer.scheduledTimer(timeInterval:(Double(ms)*0.001), target: self, selector: #selector(self.callMe), userInfo: nil, repeats: false)\n self.cb = callback\n }\n\t@objc func callMe(t: Timer) {\n self.cb!()\n } \n func stop() {\n self.timer.invalidate();\n }\n} \n' )\n\n )\n\n es6 (\"setTimeout( () => {\" (block 2 ) \"} , \" (e 1) \")\") ;\"\n java7 (\n\"__startThread(\" \n \"new Thread() {\" nl I\n \"@Override\" nl\n \"public void run() {\" nl I\n \"try {\" nl I\n \"Thread.sleep( (long) ( \" (e 1) \"));\" nl\n (block 2)\n nl i\n \"} catch (Exception e) {\" nl I\n \"System.err.println(e);\" nl i\n \"}\" nl i\n \"}\" nl i\n \"}\" nl\n \");\"\n(create_polyfill\n\"static Thread __startThread( Thread t) {\n t.start();\n return t;\n}\"\n)\n )\n\n java7uisave (\n \"new Thread() {\" nl I\n \"@Override\" nl\n \"public void run() {\" nl I\n \"try {\" nl I\n \"Thread.sleep( (long) (1000 *\" (e 1) \"));\" nl\n \"getActivity().runOnUiThread(new Runnable(){\" nl\n \"@Override\" nl\n \"public void run() {\" nl I \n (block 2)\n nl i \"}\"\n nl i \n \"});\"\n nl i\n \"} catch (Exception e) {\" nl I\n \"System.err.println(e);\" nl i\n \"}\" nl i\n \"}\" nl i\n \"}.start();\" nl\n\n )\n \n }\n }\n setTimeout cmdInterval:TimeOutID (code:block ms:int) {\n templates {\n es6 (\"setTimeout( () => {\" (block 1 ) \"} , \" (e 2) \")\")\n }\n }\n time_as_string cmdTime:string () {\n templates {\n es6 (\"(new Date()).toString()\")\n }\n }\n}","is_folder":false,"base64bin":false},{"name":"DOMLib.clj","data":"Import \"ViewLib.clj\"\r\nImport \"ACEEditor.clj\"\r\n\r\nsystemclass SystemCanvasElement {\r\n es6 CanvasElement\r\n}\r\nsystemclass CanvasDrawCtx {\r\n es6 CanvasDrawCtx\r\n}\r\nsystemclass ACEEditor {\r\n es6 ACE\r\n}\r\nsystemclass MediaQueryList {\r\n es6 Object\r\n}\r\n\r\n\r\nsystemunion CoordinateType (double int)\r\n\r\n\r\noperator type:void es6 {\r\n fn window:string ( location@(keyword) ) ('document.location.hash')\r\n fn hashchange ( cb:(_void ()) ) ('window.addEventListener(\"hashchange\",(_event)=>{ (' (e 1) ')()})') \r\n\r\n fn mediaQuery:MediaQueryList (query:string) ('window.matchMedia(' (e 1) ')')\r\n fn matches:boolean (q:MediaQueryList) ( (e 1) '.matches')\r\n}\r\n\r\noperators {\r\n\r\n\r\n set _:string ( el:ACEEditor text:string ) {\r\n templates {\r\n es6 ( (e 1) \".setValue(\" (e 2) \")\")\r\n }\r\n }\r\n\r\n valueof _:string ( el:ACEEditor ) {\r\n templates {\r\n es6 ( (e 1) \".getValue()\")\r\n }\r\n }\r\n create_ace _:ACEEditor ( el:ViewGroup) {\r\n templates {\r\n es6 (\"ace.edit(\" (e 1) \")\" )\r\n }\r\n }\r\n create_ace _:ACEEditor ( el:View) {\r\n templates {\r\n es6 (\"ace.edit(\" (e 1) \")\" )\r\n }\r\n }\r\n set_mode _:void ( el:ACEEditor name:string) {\r\n templates {\r\n es6 ( (e 1 )\".getSession().setMode(\" (e 2) \") \" )\r\n }\r\n }\r\n onChange _:void ( el:ACEEditor code:block) {\r\n templates {\r\n es6 ( (e 1 ) \".on(\\\"input\\\", () => {\" nl I (block 2) i nl \"}) \" )\r\n }\r\n }\r\n\r\n eval_code _:void (code:string) {\r\n templates {\r\n es6 ( \"eval(\" (e 1 ) \")\")\r\n } \r\n }\r\n window_width _:int () { \r\n templates {\r\n es6 ( 'window.innerWidth')\r\n }\r\n }\r\n window_height _:int () { \r\n templates {\r\n es6 ( 'window.innerHeight')\r\n }\r\n }\r\n ctx _:CanvasDrawCtx (elem:SystemCanvasElement ) {\r\n templates {\r\n es6 ((e 1 ) '.getContext(\"2d\")')\r\n }\r\n }\r\n\r\n beginPath _:void ( ctx:CanvasDrawCtx ) {\r\n templates {\r\n es6 ( (e 1) \".beginPath();\" nl)\r\n } \r\n }\r\n moveTo _:void (x:CoordinateType y:CoordinateType) {\r\n templates {\r\n es6 ( (e 1) \".moveTo(\" (e 1) \",\" (e 2) \");\" nl)\r\n } \r\n }\r\n lineTo _:void (x:CoordinateType y:CoordinateType) {\r\n templates {\r\n es6 ( (e 1) \".lineTo(\" (e 1) \",\" (e 2) \");\" nl )\r\n } \r\n }\r\n fill _:void () {\r\n templates {\r\n es6 ( (e 1) \".fill()\")\r\n } \r\n }\r\n\r\n create_canvas _:SystemCanvasElement ( width:int height:int ) {\r\n templates {\r\n es6 ( 'document.createElement(\"canvas\")' )\r\n }\r\n }\r\n setWidth _:void ( c:SystemCanvasElement width:int) {\r\n templates {\r\n es6 ( (e 1) '.width = ' (e 2) ';' nl (e 1) '.style.width = ' (e 2) ' +\"px\";' nl)\r\n }\r\n }\r\n setHeight _:void ( c:SystemCanvasElement height:int) {\r\n templates {\r\n es6 ( (e 1) '.height = ' (e 2) ';' nl (e 1) '.style.height = ' (e 2) ' +\"px\";' nl)\r\n }\r\n }\r\n\r\n append _:void ( el:ViewGroup c:SystemCanvasElement ) {\r\n templates {\r\n es6 ( (e 1) '.appendChild(' (e 2) ')')\r\n }\r\n }\r\n\r\n beginPath _:void (c:CanvasDrawCtx) {\r\n templates {\r\n es6 ( (e 1 ) \".beginPath()\")\r\n } \r\n }\r\n scale _:void (c:CanvasDrawCtx amount:CoordinateType) {\r\n templates {\r\n es6 ( (e 1 ) \".scale(\" (e 2) \", \" (e 2) \")\")\r\n } \r\n }\r\n translate _:void (c:CanvasDrawCtx x:CoordinateType y:CoordinateType) {\r\n templates {\r\n es6 ( (e 1 ) \".translate(\" (e 2) \", \" (e 3) \")\")\r\n } \r\n }\r\n fill _:void (c:CanvasDrawCtx) {\r\n templates {\r\n es6 ( (e 1 ) \".fill()\")\r\n } \r\n }\r\n stroke _:void (c:CanvasDrawCtx) {\r\n templates {\r\n es6 ( (e 1 ) \".stroke()\")\r\n } \r\n }\r\n stroke _:void (c:CanvasDrawCtx color:string width:CoordinateType) {\r\n templates {\r\n es6 ( (e 1 ) \".strokeStyle = \" (e 2) nl (e 1 ) \".lineWidth = \" (e 3) nl )\r\n } \r\n }\r\n stroke _:void (c:CanvasDrawCtx color:string) {\r\n templates {\r\n es6 ( (e 1 ) \".strokeStyle = \" (e 2))\r\n } \r\n }\r\n fillStyle _:void (c:CanvasDrawCtx color:string) {\r\n templates {\r\n es6 ( (e 1 ) \".fillStyle = \" (e 2))\r\n } \r\n }\r\n moveTo _:void (c:CanvasDrawCtx x:CoordinateType y:CoordinateType) {\r\n templates {\r\n es6 ( (e 1 ) \".moveTo(\" (e 2) \",\" (e 3) \")\")\r\n } \r\n }\r\n lineTo _:void (c:CanvasDrawCtx x:CoordinateType y:CoordinateType) {\r\n templates {\r\n es6 ( (e 1 ) \".lineTo(\" (e 2) \",\" (e 3) \")\")\r\n } \r\n }\r\n bezierCurveTo _:void (c:CanvasDrawCtx x1:CoordinateType y1:CoordinateType x2:CoordinateType y2:CoordinateType x3:CoordinateType y3:CoordinateType) {\r\n templates {\r\n es6 ( (e 1 ) \".bezierCurveTo(\" (e 2) \",\" (e 3) \",\" (e 4) \",\" (e 5) \",\" (e 6) \",\" (e 7) \")\")\r\n } \r\n }\r\n get_context _:CanvasDrawCtx ( e:SystemCanvasElement) {\r\n templates {\r\n es6 ( (e 1 ) \".getContext(\\\"2d\\\") \")\r\n }\r\n }\r\n save _:void ( e:CanvasDrawCtx) {\r\n templates {\r\n es6 ( (e 1) '.save()')\r\n }\r\n }\r\n restore _:void ( e:CanvasDrawCtx) {\r\n templates {\r\n es6 ( (e 1) '.restore()')\r\n }\r\n }\r\n opacity _:void (e:CanvasDrawCtx v:double) {\r\n templates {\r\n es6 ( (e 1) '.globalAlpha = ' (e 2))\r\n }\r\n }\r\n document_body base:ViewGroup () {\r\n templates {\r\n es6 (\"document.body\")\r\n } \r\n }\r\n create_text _:ViewGroup ( text:string) {\r\n templates {\r\n es6 (\"document.createTextNode( \" (e 1) \")\")\r\n }\r\n }\r\n getChild _@(optional):ViewGroup ( el:ViewGroup i:int) {\r\n templates {\r\n es6 ( (e 1) \".children[\" (e 2) \"]\")\r\n } \r\n }\r\n ; myAnchor.parentNode.replaceChild(mySpan, myAnchor);\r\n replace_dom _:ViewGroup ( oldEl:ViewGroup newEl:ViewGroup ) {\r\n templates {\r\n es6 ( (e 1) \".parentNode.replaceChild( \" (e 2) \", \" (e 1) \")\")\r\n }\r\n }\r\n clear _:ViewGroup ( oldEl:ViewGroup ) {\r\n templates {\r\n es6 ( \"while( \" (e 1) \".firstChild) \" (e 1) \".removeChild( \" (e 1) \".firstChild);\" )\r\n }\r\n }\r\n remove_dom _:ViewGroup ( oldEl:ViewGroup ) {\r\n templates {\r\n es6 ( \"(\" (e 1) \".parentNode ? \" (e 1) \".parentNode.removeChild( \" (e 1) \") : null);\")\r\n ranger ( '(remove_dom ' (e 1) ')' )\r\n }\r\n }\r\n create_element _:ViewGroup ( elName:string) {\r\n templates {\r\n es6 (\"document.createElement( \" (e 1) \")\")\r\n ranger (\"(create_dom \" (e 1) \")\")\r\n }\r\n }\r\n set_class _:void ( el:ViewGroup className:string ) {\r\n templates {\r\n es6 ( (e 1) \".className = \" (e 2))\r\n }\r\n }\r\n value _:void ( el:ViewGroup value:string ) {\r\n templates {\r\n es6 ( (e 1) \".value = \" (e 2))\r\n }\r\n }\r\n value _:string ( el:ViewGroup) {\r\n templates {\r\n es6 ( (e 1) \".value\")\r\n }\r\n }\r\n add_listener _:void (el:ViewGroup name:string cb:(_:void (event:DOMEvent))) {\r\n templates {\r\n es6 ( (e 1) \".addEventListener( \" ( e 2 ) \", \" (e 3) \")\")\r\n }\r\n }\r\n clone _:ViewGroup (elem:ViewGroup) {\r\n templates {\r\n es6 ( (e 1) \".cloneNode(true)\")\r\n ranger ( '(clone ' (e 1 )' )')\r\n }\r\n } \r\n insert _:void (el:ViewGroup newChild:ViewGroup index:int) {\r\n templates {\r\n es6 ( (e 1) \".insertBefore( \" (e 2) \", \" (e 1) \".children[\" (e 3) \"]);\")\r\n }\r\n }\r\n add _:void (el:ViewGroup newChild:ViewGroup) {\r\n templates {\r\n es6 ( (e 1) \".appendChild(\" (e 2) \");\")\r\n ranger ( '(add ' (e 1 )' ' (e 2) ' )')\r\n }\r\n }\r\n attr _:void (el:ViewGroup name:string value:string ) {\r\n templates {\r\n es6 ( (e 1) \".setAttribute(\" (e 2) \", \" (e 3)\")\")\r\n ranger ('(attr ' (e 1 ) ' ' (e 2 ) ' ' (e 3 ) ' ) ')\r\n }\r\n }\r\n text _:void (el:ViewGroup value:string ) {\r\n templates {\r\n es6 ( (e 1) \".textContent = \" (e 2) )\r\n ranger ('(text ' (e 1) ' ' (e 2) ')')\r\n }\r\n }\r\n find_canvas _@(optional):SystemCanvasElement (id:string) {\r\n templates {\r\n es6 ( 'document.getElementById(' (e 1) ')')\r\n } \r\n }\r\n find_element _@(optional):ViewGroup (id:string) {\r\n templates {\r\n es6 ( 'document.getElementById(' (e 1) ')')\r\n } \r\n }\r\n find_element_by_attr _@(optional):ViewGroup ( attr:string value:string ) {\r\n templates {\r\n es6 ( `document.querySelectorAll('[' + ` (e 1) ` + '=\"' + ` (e 2) ` + '\"]')[0]` )\r\n ranger ( '(find_element_by_attr ' (e 1) ' ' (e 2) ')' )\r\n }\r\n }\r\n}\r\n\r\n","is_folder":false,"base64bin":false},{"name":"Ajax.clj","data":"Import \"JSON.clj\"\r\n\r\n\r\noperators {\r\n fetch_json _:void ( url:string callback:(_:void ( data:JSONDataObject )) error:(_:void ()) ) {\r\n templates {\r\n ranger ('(post_json ' (e 1) ' ' (e 2) ' ' (e 3) ' ' (e 4) ')' )\r\n es6 ( \"axios.get(\" (e 1) \") .then((res)=>{\r\n ((\"(e 2) \")(res.data));\r\n })\"\r\n )\r\n java7 (\r\n \"\"\r\n )\r\n }\r\n }\r\n post_json _@(throws):void ( url:string data:JSONDataObject callback:(_:void ( data:JSONDataObject )) error:(_:void ()) ) {\r\n templates {\r\n ranger ('(post_json ' (e 1) ' ' (e 2) ' ' (e 3) ' ' (e 4) ')' )\r\n es6 ( \"axios.post(\" (e 1) \", \" (e 2) \") .then((res)=>{\r\n ((\"(e 3) \")(res.data));\r\n })\"\r\n )\r\n java7 ( \"AsyncPostTest.PostJSONData( (new AsyncPostTest() { \" nl I\r\n \"@Override\" nl\r\n \"protected void onPostExecute(String strData) {\" nl I\r\n 'try {' I\r\n (e 3) \".run(new JSONObject(strData)); \" nl i\r\n '} catch( Exception e) {}' nl i\r\n \"}\" nl i\r\n \"}),\" (e 1) \", \" (e 2) \" ); \" (imp \"android.os.AsyncTask\") \r\n (imp \"org.json.JSONObject\") (plugin 'maven' ( (dep 'org.json' 'json' '20171018' ) ) )\r\n(java_class 'AsyncPostTest' `\r\nimport android.os.AsyncTask;\r\n\r\nimport java.io.BufferedReader;\r\nimport java.io.DataOutputStream;\r\nimport java.io.InputStreamReader;\r\nimport java.net.HttpURLConnection;\r\nimport java.net.URL;\r\nimport org.json.JSONObject;\r\n\r\nclass AsyncPostTest extends AsyncTask<String, Void, String> {\r\n\r\n private Exception exception;\r\n public String dataToSend = \"\";\r\n public String urlToSend = \"\";\r\n static void PostJSONData( AsyncPostTest req, String url, JSONObject data ) {\r\n req.dataToSend = data.toString();\r\n req.urlToSend = url;\r\n req.execute();\r\n }\r\n protected String doInBackground(String... urls) {\r\n HttpURLConnection urlConnection = null;\r\n StringBuilder x = new StringBuilder();\r\n try {\r\n\r\n URL url = new URL(this.urlToSend);\r\n HttpURLConnection connection = (HttpURLConnection) url.openConnection();\r\n connection.setConnectTimeout(500);\r\n connection.setReadTimeout(500);\r\n // Allow Outputs (sending)\r\n connection.setDoOutput(true);\r\n connection.setUseCaches(false);\r\n\r\n // Enable POST method\r\n connection.setRequestMethod(\"POST\");\r\n connection.setRequestProperty(\"Content-Type\", \"application/json\");\r\n connection.setRequestProperty(\"charset\", \"utf-8\");\r\n DataOutputStream printout = new DataOutputStream(connection.getOutputStream());\r\n printout.write(this.dataToSend.getBytes(\"UTF8\"));\r\n printout.flush();\r\n // Here you read any answer from server.\r\n BufferedReader serverAnswer = new BufferedReader(new InputStreamReader(connection.getInputStream()));\r\n String read_data = \"\";\r\n String line;\r\n while ((line = serverAnswer.readLine()) != null) {\r\n read_data = read_data + line;\r\n }\r\n printout.close();\r\n serverAnswer.close();\r\n printout.close();\r\n return read_data;\r\n } catch (Exception e) {\r\n e.printStackTrace();\r\n } finally {\r\n if (urlConnection != null) {\r\n urlConnection.disconnect();\r\n }\r\n }\r\n return x.toString();\r\n }\r\n\r\n protected void onPostExecute(String strData) {\r\n // TODO: check this.exception\r\n // TODO: do something with the feed\r\n }\r\n}\r\n\r\n`) \r\n )\r\n }\r\n }\r\n\r\n https_post_json _@(throws):void ( url:string data:JSONDataObject callback:(_:void ( data:JSONDataObject )) error:(_:void ()) ) {\r\n templates {\r\n ranger ('(post_json ' (e 1) ' ' (e 2) ' ' (e 3) ' ' (e 4) ')' )\r\n es6 ( \"axios.post(\" (e 1) \", \" (e 2) \") .then((res)=>{\r\n ((\"(e 3) \")(res.data));\r\n })\"\r\n )\r\n java7 ( \"AsyncHttpsPostTest.PostJSONData( (new AsyncHttpsPostTest() { \" nl I\r\n \"@Override\" nl\r\n \"protected void onPostExecute(String strData) {\" nl I\r\n 'try {' I\r\n (e 3) \".run(new JSONObject(strData)); \" nl i\r\n '} catch( Exception e) {'nl I\r\n (e 4) \".run(); \" nl i\r\n '}' nl i\r\n \"}\" nl i\r\n \"}),\" (e 1) \", \" (e 2) \" ); \" (imp \"android.os.AsyncTask\") \r\n (imp \"org.json.JSONObject\") (plugin 'maven' ( (dep 'org.json' 'json' '20171018' ) ) )\r\n(java_class 'AsyncHttpsPostTest' `\r\nimport android.os.AsyncTask;\r\n\r\nimport java.io.BufferedReader;\r\nimport java.io.DataOutputStream;\r\nimport java.io.InputStreamReader;\r\nimport javax.net.ssl.HttpsURLConnection;\r\nimport java.net.URL;\r\nimport org.json.JSONObject;\r\n\r\nclass AsyncHttpsPostTest extends AsyncTask<String, Void, String> {\r\n\r\n private Exception exception;\r\n public String dataToSend = \"\";\r\n public String urlToSend = \"\";\r\n static void PostJSONData( AsyncHttpsPostTest req, String url, JSONObject data ) {\r\n req.dataToSend = data.toString();\r\n req.urlToSend = url;\r\n req.execute();\r\n }\r\n protected String doInBackground(String... urls) {\r\n HttpsURLConnection urlConnection = null;\r\n StringBuilder x = new StringBuilder();\r\n try {\r\n\r\n URL url = new URL(this.urlToSend);\r\n HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();\r\n connection.setConnectTimeout(500);\r\n connection.setReadTimeout(500);\r\n // Allow Outputs (sending)\r\n connection.setDoOutput(true);\r\n connection.setUseCaches(false);\r\n\r\n // Enable POST method\r\n connection.setRequestMethod(\"POST\");\r\n connection.setRequestProperty(\"Content-Type\", \"application/json\");\r\n connection.setRequestProperty(\"charset\", \"utf-8\");\r\n DataOutputStream printout = new DataOutputStream(connection.getOutputStream());\r\n printout.write(this.dataToSend.getBytes(\"UTF8\"));\r\n printout.flush();\r\n // Here you read any answer from server.\r\n BufferedReader serverAnswer = new BufferedReader(new InputStreamReader(connection.getInputStream()));\r\n String read_data = \"\";\r\n String line;\r\n while ((line = serverAnswer.readLine()) != null) {\r\n read_data = read_data + line;\r\n }\r\n printout.close();\r\n serverAnswer.close();\r\n printout.close();\r\n return read_data;\r\n } catch (Exception e) {\r\n e.printStackTrace();\r\n } finally {\r\n if (urlConnection != null) {\r\n urlConnection.disconnect();\r\n }\r\n }\r\n return x.toString();\r\n }\r\n\r\n protected void onPostExecute(String strData) {\r\n // TODO: check this.exception\r\n // TODO: do something with the feed\r\n }\r\n}\r\n\r\n`) \r\n )\r\n }\r\n }\r\n\r\n\r\n}\r\n","is_folder":false,"base64bin":false},{"name":"Crypto.clj","data":"\r\nImport \"TypedArrays.clj\"\r\n\r\nsystemclass RandomGenerator {\r\n java7 SecureRandom ( (imp 'java.security.SecureRandom'))\r\n es6 RandomSource\r\n}\r\nsystemclass KeyGenerator {\r\n java7 KeyGenerator ( (imp 'javax.crypto.KeyGenerator'))\r\n}\r\nsystemclass SecretKey {\r\n java7 SecretKeySpec ( (imp 'javax.crypto.spec.SecretKeySpec'))\r\n}\r\nsystemclass Cipher {\r\n java7 Cipher ( (imp 'javax.crypto.Cipher'))\r\n}\r\n\r\n\r\n\r\noperators {\r\n\r\n newRandomGenerator _:RandomGenerator () {\r\n templates {\r\n java7 ('SecureRandom.getInstance(\"SHA1PRNG\")')\r\n es6 ( 'window.crypto' )\r\n } \r\n }\r\n \r\n generate _:void ( generator:RandomGenerator buff:RUint32Array) {\r\n templates {\r\n es6 ( (e 1) '.getRandomValues(' (e 2) ')')\r\n }\r\n }\r\n\r\n setSeed _:void ( g:RandomGenerator str:string) {\r\n templates {\r\n java7 ((e 1) '.setSeed(' (e 2) '.getBytes());')\r\n } \r\n }\r\n\r\n newKeyGenerator _:KeyGenerator () {\r\n templates {\r\n java7 ( 'KeyGenerator.getInstance(\"AES\")')\r\n }\r\n }\r\n init _:void ( kg:KeyGenerator keylen:int rand:RandomGenerator) {\r\n templates {\r\n java7 ( (e 1 ) '.init(' (e 2) ', ' (e 3)');' )\r\n }\r\n }\r\n createAESKey _:SecretKey ( gen:KeyGenerator) {\r\n templates {\r\n java7 ('new SecretKeySpec(('(e 1)'.generateKey()).getEncoded(), \"AES\")')\r\n }\r\n }\r\n createAESKey _:SecretKey ( bytes:Bytes) {\r\n templates {\r\n java7 ('new SecretKeySpec('(e 1)', 0, 128 / 8 , \"AES\")')\r\n }\r\n }\r\n newAESCipher _:Cipher ( ) {\r\n templates {\r\n java7 ( 'Cipher.getInstance(\"AES\")')\r\n }\r\n }\r\n init_decoder _:void ( c:Cipher key:SecretKey ) {\r\n templates {\r\n java7 ( (e 1) '.init(Cipher.DECRYPT_MODE, ' (e 2) ');')\r\n }\r\n }\r\n init_encoder _:void ( c:Cipher key:SecretKey ) {\r\n templates {\r\n java7 ( (e 1) '.init(Cipher.ENCRYPT_MODE, ' (e 2) ');')\r\n }\r\n }\r\n encode _@(throws):Bytes ( c:Cipher data:Bytes ) {\r\n templates {\r\n java7 ( (e 1) '.doFinal(' (e 2) ')')\r\n }\r\n }\r\n decode _@(throws):Bytes ( c:Cipher data:Bytes ) {\r\n templates {\r\n java7 ( (e 1) '.doFinal(' (e 2) ')')\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","is_folder":false,"base64bin":false},{"name":"Engine3D.clj","data":"\r\n\r\nsystemclass Vector3 {\r\n es6 BABYLON.Vector3\r\n}\r\n\r\nsystemclass Canvas3D {\r\n es6 HTMLElement\r\n}\r\n\r\nsystemclass Engine3D {\r\n es6 BABYLON.Engine\r\n}\r\n\r\nsystemclass Scene3D {\r\n es6 BABYLON.Scene\r\n}\r\n\r\nsystemclass Camera3D {\r\n es6 BABYLON.FreeCamera\r\n}\r\nsystemclass Light3D {\r\n es6 Object\r\n}\r\nsystemclass Object3D {\r\n es6 Object\r\n}\r\nsystemclass PickResult3D {\r\n es6 Object\r\n}\r\nsystemclass CanvasClick {\r\n es6 Object\r\n}\r\nsystemclass ImportResult3D {\r\n es6 Object\r\n}\r\nsystemclass AssetLoader3D {\r\n es6 Object\r\n}\r\nsystemclass LoadTask3D {\r\n es6 Object\r\n}\r\nsystemclass LoadTaskEvent3D {\r\n es6 Object\r\n}\r\nsystemclass Material3D {\r\n es6 Object\r\n}\r\nsystemclass Texture3D {\r\n es6 Object\r\n}\r\nsystemclass Quaternion3D {\r\n es6 Object\r\n}\r\nsystemclass PhysicsObject3D {\r\n es6 Object\r\n}\r\nsystemclass PhysicsShape3D {\r\n es6 Object\r\n}\r\nsystemclass PhysicsOptions3D {\r\n es6 Object\r\n}\r\nsystemclass HighlightLayer3D {\r\n\r\n}\r\nsystemclass Vector4 {\r\n es6 BABYLON.Vector4\r\n}\r\nsystemclass FaceUV {\r\n es6 BABYLON.Vector4\r\n}\r\nsystemclass Matrix3D {\r\n es6 BABYLON.Matrix\r\n}\r\n\r\n\r\nsystemunion AnyLight3D (Light3D HemisphericLight3D)\r\n\r\noperators {\r\n\r\n ; generic math ops\r\n\r\n near _:boolean (value:double compareTo:double delta:double) {\r\n templates {\r\n * @macro(true) ( '( (fabs ( ' (e 1) ' - ' (e 2) ') ) < ' (e 3) ' ) ' )\r\n }\r\n }\r\n\r\n\r\n content_ready _:void ( code:block) {\r\n templates {\r\n es6 (`window.addEventListener('DOMContentLoaded', function() {` nl I (block 1) i nl `})` nl)\r\n }\r\n }\r\n\r\n renderLoop _:void ( en:Engine3D cb:(_:void ()) ) {\r\n templates {\r\n es6 ( (e 1) '.runRenderLoop(()=>{' nl I '(' (e 2) ') () ' i nl ' });' nl )\r\n }\r\n }\r\n\r\n vec _:Vector4 ( x:double y:double z:double w:double ) {\r\n templates {\r\n es6 ('new BABYLON.Vector4(' (e 1) ', ' (e 2) ',' (e 3) ',' (e 4) ')')\r\n }\r\n } \r\n\r\n vec3 _:Vector3 ( x:double y:double z:double ) {\r\n templates {\r\n es6 ('new BABYLON.Vector3(' (e 1) ', ' (e 2) ',' (e 3) ')')\r\n }\r\n }\r\n\r\n vec3 _:Vector3 ( x:int y:int z:int ) {\r\n templates {\r\n es6 ('new BABYLON.Vector3(' (e 1) ', ' (e 2) ', ' (e 3) ')')\r\n }\r\n }\r\n\r\n vec _:Vector3 ( x:double y:double z:double ) {\r\n templates {\r\n es6 ('new BABYLON.Vector3(' (e 1) ', ' (e 2) ',' (e 3) ')')\r\n }\r\n }\r\n\r\n vec _:Vector3 ( x:int y:int z:int ) {\r\n templates {\r\n es6 ('new BABYLON.Vector3(' (e 1) ', ' (e 2) ', ' (e 3) ')')\r\n }\r\n }\r\n\r\n ; color \r\n color _:Color3 ( r:double g:double b:double ) {\r\n templates {\r\n es6 ('new BABYLON.Color3(' (e 1) ', ' (e 2) ', ' (e 3) ')')\r\n }\r\n }\r\n\r\n ; setting color\r\n setDiffuse _:void (o:Material3D color:Color3 ) {\r\n templates {\r\n es6 ( (e 1) '.diffuseColor = ' (e 2))\r\n }\r\n }\r\n setSpecular _:void (o:Material3D color:Color3 ) {\r\n templates {\r\n es6 ( (e 1) '.specularColor = ' (e 2))\r\n }\r\n }\r\n setEmissive _:void (o:Material3D color:Color3 ) {\r\n templates {\r\n es6 ( (e 1) '.emissiveColor = ' (e 2))\r\n }\r\n }\r\n setAmbitent _:void (o:Material3D color:Color3 ) {\r\n templates {\r\n es6 ( (e 1) '.ambientColor = ' (e 2))\r\n }\r\n }\r\n\r\n setAlpha _:void (o:Material3D alpha:double) {\r\n templates {\r\n es6 ( (e 1) '.alpha = ' (e 2))\r\n }\r\n }\r\n\r\n setAlpha _:void (o:Texture3D alpha:bolean) {\r\n templates {\r\n es6 ( (e 1) '.hasAlpha = ' (e 2))\r\n }\r\n }\r\n\r\n ; Interesting ideas:\r\n ; https://doc.babylonjs.com/how_to/ribbon_tutorial\r\n ; https://doc.babylonjs.com/how_to/render_scene_on_a_png\r\n ; physics engine rules...\r\n ; https://doc.babylonjs.com/how_to/using_the_physics_engine\r\n\r\n enablePhysics _:void (scene:Scene3D) {\r\n templates {\r\n es6 ( (e 1) '.enablePhysics()')\r\n }\r\n }\r\n\r\n physicsOptions _:PhysicsOptions3D () {\r\n templates {\r\n es6 ('{}')\r\n }\r\n }\r\n mass _:void (o:PhysicsOptions3D value:double) {\r\n templates {\r\n es6 ( (e 1) '.mass = ' (e 2))\r\n }\r\n }\r\n friction _:void (o:PhysicsOptions3D value:double) {\r\n templates {\r\n es6 ( (e 1) '.friction = ' (e 2))\r\n }\r\n }\r\n restitution _:void (o:PhysicsOptions3D value:double) {\r\n templates {\r\n es6 ( (e 1) '.restitution = ' (e 2))\r\n }\r\n }\r\n\r\n physicsBox _:PhysicsShape3D () {\r\n templates {\r\n es6 ('BABYLON.PhysicsImpostor.BoxImpostor')\r\n }\r\n }\r\n physicsSphere _:PhysicsShape3D () {\r\n templates {\r\n es6 ('BABYLON.PhysicsImpostor.SphereImpostor')\r\n }\r\n }\r\n physicsPlane _:PhysicsShape3D () {\r\n templates {\r\n es6 ('BABYLON.PhysicsImpostor.PlaneImpostor')\r\n }\r\n }\r\n physicsMesh _:PhysicsShape3D () {\r\n templates {\r\n es6 ('BABYLON.PhysicsImpostor.MeshImpostor')\r\n }\r\n }\r\n physicsCylinder _:PhysicsShape3D () {\r\n templates {\r\n es6 ('BABYLON.PhysicsImpostor.CylinderImpostor')\r\n }\r\n }\r\n\r\n physics _:PhysicsObject3D (scene:Scene3D obj:Object3D shape:PhysicsShape3D options:PhysicsOptions3D ) {\r\n templates {\r\n es6 ( 'new BABYLON.PhysicsImpostor(' (e 2) ', '( e 3) ', ' (e 4) ', ' (e 1) ')')\r\n }\r\n }\r\n\r\n setPhysics _:void (obj:Object3D shape:PhysicsObject3D) {\r\n templates {\r\n es6 ( (e 1) '.physicsImpostor = ' (e 2))\r\n }\r\n }\r\n\r\n ; impostor.applyImpulse(new BABYLON.Vector3(10, 10, 0), sphere.getAbsolutePosition());\r\n impulse _:void (o:PhysicsObject3D forceVector:Vector3 forcePosition:Vector3) {\r\n templates {\r\n es6 ( (e 1) '.applyImpulse(' (e 2) ', ' (e 3) ' ) ' )\r\n }\r\n }\r\n\r\n ; lights\r\n\r\n newSpotLight _:Light3D (scene:Scene3D start:Vector3 end:Vector3 angle:double distance:double name:string) {\r\n templates {\r\n es6 ('new BABYLON.SpotLight(' (e 6) ',' (e 2) ',' (e 3) ',' (e 4) ',' (e 5) ',' (e 1) ')')\r\n }\r\n }\r\n newDirectionalLight _:Light3D (scene:Scene3D direction:Vector3 name:string) {\r\n templates {\r\n es6 ('new BABYLON.DirectionalLight(' (e 3) ',' (e 2) ',' (e 1) ')')\r\n }\r\n }\r\n\r\n setDiffuse _:void (o:Light3D color:Color3 ) {\r\n templates {\r\n es6 ( (e 1) '.diffuse = ' (e 2))\r\n }\r\n }\r\n setSpecular _:void (o:Light3D color:Color3 ) {\r\n templates {\r\n es6 ( (e 1) '.specular = ' (e 2))\r\n }\r\n }\r\n setGround _:void (o:HemisphericLight3D color:Color3 ) {\r\n templates {\r\n es6 ( (e 1) '.groundColor = ' (e 2))\r\n }\r\n }\r\n\r\n intensity _:void (l:Light3D amount:double) {\r\n templates {\r\n es6 ( (e 1) '.intensity = ' (e 2))\r\n }\r\n }\r\n\r\n range _:void (l:Light3D range:double) {\r\n templates {\r\n es6 ( (e 1) '.range = ' (e 2))\r\n }\r\n }\r\n\r\n enableFor _void ( l:Light3D list:[Object3D]) {\r\n templates {\r\n es6 ( (e 1) '.excludedMeshes = ' (e 2))\r\n }\r\n }\r\n disableFor _void ( l:Light3D list:[Object3D]) {\r\n templates {\r\n es6 ( (e 1) '.includedOnlyMeshes = ' (e 2))\r\n }\r\n }\r\n \r\n\r\n \r\n\r\n \r\n \r\n ; vector math ops\r\n \r\n catmull _:Vector3 ( t:double v1:Vector3 v2:Vector3 v3:Vector3 v4:Vector3 ) {\r\n templates {\r\n es6 ( 'BABYLON.Vector3.CatmullRom(' (e 2) ', ' (e 3) ', ' (e 4) ', ' (e 5) ', ' (e 1) ') ' )\r\n }\r\n }\r\n \r\n - _:Vector3 ( v1:Vector3 other:Vector3 ) {\r\n templates {\r\n es6 ( (e 1) '.subtract(' (e 2) ')')\r\n }\r\n }\r\n\r\n * _:Vector3 ( v1:Vector3 n:double) {\r\n templates {\r\n es6 ( (e 1) '.scale(' (e 2) ')')\r\n }\r\n }\r\n\r\n * _:Vector3 ( v1:Vector3 v2:Vector3) {\r\n templates {\r\n es6 ( (e 1) '.mutiply(' (e 2) ')')\r\n }\r\n }\r\n \r\n + _:Vector3 ( v1:Vector3 v2:Vector3) {\r\n templates {\r\n es6 ( (e 1) '.add(' (e 2) ')')\r\n }\r\n }\r\n\r\n dot _:Vector3 ( v1:Vector3 v2:Vector3) {\r\n templates {\r\n es6 ( (e 1) '.Dot(' (e 2) ')')\r\n }\r\n }\r\n\r\n cross _:Vector3 ( v1:Vector3 v2:Vector3) {\r\n templates {\r\n es6 ( (e 1) '.Cross(' (e 2) ')')\r\n }\r\n }\r\n\r\n distance _:Vector3 ( v1:Vector3 v2:Vector3) {\r\n templates {\r\n es6 ( (e 1) '.Distance(' (e 2) ')')\r\n }\r\n }\r\n \r\n\r\n == _:Vector3 ( v1:Vector3 v2:Vector3) {\r\n templates {\r\n es6 ( (e 1) '.equals(' (e 2) ')')\r\n }\r\n }\r\n\r\n clone _:Vector3 ( v1:Vector3 ) {\r\n templates {\r\n es6 ( (e 1) '.clone()')\r\n }\r\n }\r\n\r\n normalize _:Vector3 ( v1:Vector3 ) {\r\n templates {\r\n es6 ( (e 1) '.normalize()')\r\n }\r\n }\r\n \r\n ; Matrix operators\r\n toArray _:[double] ( o:Matrix3D ) {\r\n templates {\r\n es6 ( (e 1) '.toArray()')\r\n }\r\n }\r\n\r\n invert _:Matrix3D ( o:Matrix3D ) {\r\n templates {\r\n es6 ( (e 1) '.invert()')\r\n }\r\n }\r\n \r\n add _:Matrix3D ( o:Matrix3D other:Matrix3D ) {\r\n templates {\r\n es6 ( (e 1) '.add(' (e 2) ')')\r\n }\r\n }\r\n\r\n + _:Matrix3D ( o:Matrix3D other:Matrix3D ) {\r\n templates {\r\n es6 ( (e 1) '.add(' (e 2) ')')\r\n }\r\n }\r\n\r\n setTranslate _:Matrix3D ( o:Matrix3D v:Vector3 ) {\r\n templates {\r\n es6 ( (e 1) '.setTranslation(' (e 2) ')')\r\n }\r\n }\r\n\r\n getTranslate _:Vector3 ( o:Matrix3D ) {\r\n templates {\r\n es6 ( (e 1) '.getTranslation()')\r\n }\r\n }\r\n\r\n resetRotateAndScale _:Matrix3D ( o:Matrix3D ) {\r\n templates {\r\n es6 ( (e 1) '.removeRotationAndScaling()')\r\n }\r\n }\r\n\r\n * _:Matrix3D ( o:Matrix3D other:Matrix3D ) {\r\n templates {\r\n es6 ( (e 1) '.mutiply(' (e 2) ')')\r\n }\r\n }\r\n\r\n copyFrom _:Matrix3D ( o:Matrix3D other:Matrix3D ) {\r\n templates {\r\n es6 ( (e 1) '.copyFrom(' (e 2) ')')\r\n }\r\n }\r\n \r\n == _:Matrix3D ( o:Matrix3D other:Matrix3D ) {\r\n templates {\r\n es6 ( (e 1) '.equals(' (e 2) ')')\r\n }\r\n }\r\n\r\n clone _:Matrix3D ( o:Matrix3D ) {\r\n templates {\r\n es6 ( (e 1) '.clone()')\r\n }\r\n }\r\n\r\n identity_matrix _:Matrix3D ( ) {\r\n templates {\r\n es6 ( 'BABYLON.Matrix.Identity()')\r\n }\r\n }\r\n \r\n\r\n getRow _:Vector4 ( o:Matrix3D index:int ) {\r\n templates {\r\n es6 ( (e 1) '.getRow(' (e 2) ')')\r\n }\r\n }\r\n\r\n cell _:double (o:Matrix3D row:int col:int) {\r\n templates {\r\n es6 ( (e 1) '.m[' (e 2) ' * 4 + ' (e 3) ']')\r\n }\r\n }\r\n \r\n\r\n\r\n\r\n \r\n\r\n newCamera _:Camera3D ( scene:Scene3D position:Vector3 name:string) {\r\n templates {\r\n es6 ('new BABYLON.FreeCamera(' (e 3) ', ' (e 2)', ' (e 1)')')\r\n }\r\n }\r\n\r\n newHemisphericLight _:HemisphericLight3D ( scene:Scene3D position:Vector3 name:string) {\r\n templates {\r\n es6 ('new BABYLON.HemisphericLight(' (e 3) ', ' (e 2)', ' (e 1)')')\r\n }\r\n }\r\n\r\n ; standard object types\r\n\r\n newSphere _:Object3D ( scene:Scene3D width:double height:double name:string) {\r\n templates {\r\n es6 ('new BABYLON.Mesh.CreateSphere(' (e 4) ', ' (e 2) ', ' (e 3)', ' (e 1)')')\r\n }\r\n }\r\n\r\n tube _:Object3D ( scene:Scene3D path:[Vector3] radiusFn:(_:double (i:int distance:double)) ) {\r\n templates {\r\n es6 ('BABYLON.MeshBuilder.CreateTube(\"tube\", {path: ' (e 2)', radiusFunction:'(e 3)', cap:BABYLON.Mesh.CAP_ALL}, ' (e 1) ')')\r\n }\r\n }\r\n\r\n box _:Object3D ( scene:Scene3D size:double name:string) {\r\n templates {\r\n es6 ('BABYLON.Mesh.CreateBox(' (e 3)', ' (e 2) ', ' (e 1) ')')\r\n }\r\n }\r\n\r\n box _:Object3D ( scene:Scene3D width:double height:double depth:double name:string) {\r\n templates {\r\n es6 ('BABYLON.MeshBuilder.CreateBox(' (e 5)', {width:' (e 2) ', height:' (e 3) ', depth:'(e 4)'}, ' (e 1) ')')\r\n }\r\n }\r\n\r\n box _:Object3D ( scene:Scene3D width:double height:double depth:double faces:[Vector4] name:string) {\r\n templates {\r\n es6 ('BABYLON.MeshBuilder.CreateBox(' (e 6)', {width:' (e 2) ', height:' (e 3) ', depth:'(e 4)', faceUV:'(e 5)'}, ' (e 1) ')')\r\n }\r\n }\r\n\r\n merge _:Object3D ( meshes:[Object3D]) {\r\n templates {\r\n es6 ( 'BABYLON.Mesh.MergeMeshes(' (e 1) ')')\r\n }\r\n }\r\n\r\n\r\n render _:void (s:Scene3D) {\r\n templates {\r\n es6 ((e 1)'.render()')\r\n }\r\n }\r\n\r\n ; object routines\r\n\r\n getQuat _:Quaternion3D (o:Object3D) {\r\n templates {\r\n es6 ( (e 1 ) '.rotation.toQuaternion()')\r\n }\r\n }\r\n\r\n wireframe _:void (o:Object3D is:boolean) {\r\n templates {\r\n es6 ( (e 1) '.wireframe = ' (e 2))\r\n }\r\n }\r\n\r\n getAbsolutePosition _:Vector3 (obj:Object3D) {\r\n templates {\r\n es6 ( (e 1) '.getAbsolutePosition()')\r\n }\r\n }\r\n\r\n setPosition _:void (obj:Object3D v:Vector3) {\r\n templates {\r\n es6 ( (e 1) '.position = ' (e 2))\r\n }\r\n }\r\n\r\n getPosition _:Vector3 (obj:Object3D) {\r\n templates {\r\n es6 ( (e 1) '.position')\r\n }\r\n }\r\n \r\n translate _:void ( obj:Object3D vector:Vector3 ) {\r\n templates {\r\n es6 ( (e 1) '.translate(' (e 2) ', 1, BABYLON.Space.WORLD ) ' )\r\n }\r\n }\r\n\r\n x _:double ( v:Vector3 ) {\r\n templates {\r\n es6 ( (e 1) '.x')\r\n }\r\n }\r\n\r\n y _:double ( v:Vector3 ) {\r\n templates {\r\n es6 ( (e 1) '.y')\r\n }\r\n }\r\n\r\n z _:double ( v:Vector3 ) {\r\n templates {\r\n es6 ( (e 1) '.z')\r\n }\r\n }\r\n\r\n parent _@(optional):Object3D (o:Object3D) {\r\n templates {\r\n es6 ( (e 1 ) '.parent')\r\n }\r\n }\r\n\r\n clone _:Object3D (o:Object3D name:string) {\r\n templates {\r\n es6 ( (e 1 ) '.clone(' (e 2) ')')\r\n }\r\n }\r\n\r\n setX _:void ( cam:Camera3D x:double) {\r\n templates {\r\n es6 ( (e 1 ) '.position.x = ' (e 2))\r\n }\r\n }\r\n\r\n setY _:void ( cam:Camera3D y:double) {\r\n templates {\r\n es6 ( (e 1 ) '.position.y = ' (e 2))\r\n }\r\n }\r\n \r\n setZ _:void ( cam:Camera3D z:double) {\r\n templates {\r\n es6 ( (e 1 ) '.position.z = ' (e 2))\r\n }\r\n }\r\n\r\n setZ _:void ( cam:Object3D z:double) {\r\n templates {\r\n es6 ( (e 1 ) '.position.z = ' (e 2))\r\n }\r\n }\r\n\r\n scale _:void ( o:Object3D v:Vector3) {\r\n templates {\r\n es6 ( (e 1 ) '.scaling = ' (e 2))\r\n }\r\n }\r\n\r\n position _:void ( o:Object3D v:Vector3) {\r\n templates {\r\n es6 ( (e 1 ) '.position = ' (e 2))\r\n }\r\n }\r\n\r\n ; new BABYLON.Quaternion.RotationAxis\r\n quat _:Quaternion3D ( v:Vector3 rotation:double) {\r\n templates {\r\n es6 ('new BABYLON.Quaternion.RotationAxis(' (e 1) ', ' (e 2) ')')\r\n }\r\n }\r\n\r\n getWorldMatrix _:Matrix3D ( o:Object3D ) {\r\n templates {\r\n es6 ( (e 1) '.getWorldMatrix()')\r\n }\r\n }\r\n \r\n setRotation _:void (o:Object3D q:Quaternion3D) {\r\n templates {\r\n es6 ( (e 1) '.rotationQuaternion = ' (e 2))\r\n }\r\n }\r\n\r\n setMaterial _:void ( o:Object3D m:Material3D) {\r\n templates {\r\n es6 ( (e 1 ) '.material = ' (e 2))\r\n }\r\n }\r\n\r\n uScale _:void (m:Texture3D val:double) {\r\n templates {\r\n es6 ( (e 1) '.uScale = ' (e 2))\r\n }\r\n }\r\n\r\n vScale _:void (m:Texture3D val:double) {\r\n templates {\r\n es6 ( (e 1) '.vScale = ' (e 2))\r\n }\r\n }\r\n \r\n\r\n onClick _:void (c:Canvas3D cb:(_:void (ev:CanvasClick)) ) {\r\n templates {\r\n es6 ( (e 1) '.addEventListener(\"click\", (e)=>{ (' (e 2) ')(e) } ) ' nl )\r\n }\r\n }\r\n getX _:double (ev:CanvasClick) {\r\n templates {\r\n es6 ( (e 1) '.clientX')\r\n }\r\n }\r\n getY _:double (ev:CanvasClick) {\r\n templates {\r\n es6 ( (e 1) '.clientY')\r\n }\r\n }\r\n setData _:void (o:Object3D data:Any) {\r\n templates {\r\n es6 ( (e 1) '.data = ' (e 2))\r\n }\r\n }\r\n getData _@(optional):Any (o:Object3D) {\r\n templates {\r\n es6 ( (e 1) '.data')\r\n }\r\n }\r\n getPointerX _:double ( s:Scene3D) {\r\n templates {\r\n es6 ( (e 1) '.pointerX')\r\n }\r\n }\r\n getPointerY _:double ( s:Scene3D) {\r\n templates {\r\n es6 ( (e 1) '.pointerY')\r\n }\r\n }\r\n pick _:PickResult3D (s:Scene3D x:double y:double) {\r\n templates {\r\n es6 ( (e 1) '.pick(' (e 2) ', ' (e 3) ')')\r\n }\r\n }\r\n hitPoint _@(optional):Vector3 ( p:PickResult3D ) {\r\n templates {\r\n es6 ( (e 1) '.pickedPoint')\r\n }\r\n }\r\n hitObject _@(optional):Object3D ( p:PickResult3D ) {\r\n templates {\r\n es6 ( (e 1) '.pickedMesh')\r\n }\r\n }\r\n\r\n setTarget _:void ( cam:Camera3D position:Vector3) {\r\n templates {\r\n es6 ((e 1) '.setTarget(' (e 2)')')\r\n }\r\n }\r\n\r\n setMouseControl _:void ( cam:Camera3D canv:Canvas3D ) {\r\n templates {\r\n es6 ((e 1) '.attachControl(' (e 2)', false)')\r\n }\r\n }\r\n\r\n getMainCanvas _:Canvas3D ( canvasID:string ) {\r\n templates {\r\n es6 (`document.getElementById(` (e 1) `)`)\r\n }\r\n }\r\n createEngine3D _:Engine3D (c:Canvas3D) {\r\n templates {\r\n es6 ('new BABYLON.Engine(' (e 1) ', true, {stencil: true})')\r\n }\r\n }\r\n createScene _:Scene3D (c:Engine3D) {\r\n templates {\r\n es6 ('new BABYLON.Scene(' (e 1) ')')\r\n }\r\n }\r\n\r\n getObjects _:[Object3D] (r:ImportResult3D) {\r\n templates {\r\n es6 ('_newMeshes')\r\n }\r\n }\r\n\r\n assetLoader _:AssetLoader3D (scene:Scene3D) {\r\n templates {\r\n es6 ('new BABYLON.AssetsManager(' (e 1) ')')\r\n }\r\n }\r\n\r\n meshLoader _:LoadTask3D (loader:AssetLoader3D name:string url:string objName:string) {\r\n templates {\r\n es6 ( (e 1) '.addMeshTask(' (e 2)', \"\", '(e 3)', ' (e 4) ')')\r\n }\r\n }\r\n getObjects _:[Object3D] ( ev:LoadTaskEvent3D) {\r\n templates {\r\n es6 ( (e 1) '.loadedMeshes')\r\n }\r\n }\r\n\r\n textureLoader _:LoadTask3D (loader:AssetLoader3D name:string url:string ) {\r\n templates {\r\n es6 ( (e 1) '.addTextureTask(' (e 2)', '(e 3)')')\r\n }\r\n }\r\n\r\n createMaterial _:Material3D (scene:Scene3D name:string) {\r\n templates {\r\n es6 ('new BABYLON.StandardMaterial(' (e 2) ', ' (e 1) ')')\r\n }\r\n }\r\n ; new BABYLON.WoodProceduralTexture(\"texture\", 1024, scene);\r\n grassTexture _:Texture3D (scene:Scene3D grassColor:Color3 groundColor:Color3 size:int) {\r\n templates {\r\n es6 ('( (c,g)=>{ var t = new BABYLON.GrassProceduralTexture( \"grass\" , ' (e 4) ', ' (e 1) ');t.grassColor = c; t.groundColor=g; return t;})(' (e 2) ', ' (e 3) ')') \r\n }\r\n }\r\n\r\n woodTexture _:Texture3D (scene:Scene3D grassColor:Color3 scale:int size:int) {\r\n templates {\r\n es6 ('( (c,g)=>{ var t = new BABYLON.WoodProceduralTexture( \"grass\" , ' (e 4) ', ' (e 1) ');t.woodColor = c; t.ampScale=g; return t;})(' (e 2) ', ' (e 3) ')') \r\n }\r\n }\r\n \r\n createTexture _:Texture3D (scene:Scene3D imageName:string ) {\r\n templates {\r\n es6 ('new BABYLON.Texture(' (e 2) ', ' (e 1) ')')\r\n }\r\n }\r\n setTexture _:void (m:Material3D text:Texture3D) {\r\n templates {\r\n es6 ( (e 1) '.diffuseTexture = ' (e 2))\r\n }\r\n }\r\n setNormalMap _:void (m:Material3D text:Texture3D) {\r\n templates {\r\n es6 ( (e 1) '.bumpTexture = ' (e 2) )\r\n }\r\n }\r\n\r\n highlight _:HighlightLayer3D (s:Scene3D name:string) {\r\n templates {\r\n es6 ('new BABYLON.HighlightLayer(' (e 2) ', ' (e 1) ')')\r\n }\r\n }\r\n outerGlow _:void (hl:HighlightLayer3D value:boolean) {\r\n templates {\r\n es6 ( (e 1) '.outerGlow = ' (e 2))\r\n }\r\n }\r\n innerGlow _:void (hl:HighlightLayer3D value:boolean) {\r\n templates {\r\n es6 ( (e 1) '.innerGlow = ' (e 2))\r\n }\r\n }\r\n\r\n add _:void ( hl:HighlightLayer3D o:Object3D color:Color3) {\r\n templates {\r\n es6 ( (e 1) '.addMesh(' (e 2) ', ' (e 3) ')' )\r\n }\r\n }\r\n\r\n remove _:void ( hl:HighlightLayer3D o:Object3D ) {\r\n templates {\r\n es6 ( (e 1) '.removeMesh(' (e 2) ')' )\r\n }\r\n }\r\n\r\n start _:AssetLoader3D (loader:AssetLoader3D) {\r\n templates {\r\n es6 ( (e 1) '.load()')\r\n }\r\n }\r\n\r\n onReady _:void (task:LoadTask3D cb:(_:void ( event:LoadTaskEvent3D ))) {\r\n templates {\r\n es6 ( (e 1) '.onSuccess = (_task)=> {' nl I '(' (e 2) ')(_task)' nl I '}' nl )\r\n }\r\n }\r\n\r\n load _@(async):void (loader:AssetLoader3D) {\r\n templates {\r\n es6 (`await (new Promise(resolve => { \r\n ` (e 1) `.onFinish = (_task)=> { \r\n resolve() \r\n }; \r\n ` (e 1)`.load() }))`)\r\n }\r\n }\r\n \r\n\r\n listenToResize _:void (c:Engine3D) {\r\n templates {\r\n es6 (`\r\nwindow.addEventListener('resize', function() {\r\n ` (e 1)`.resize();\r\n}) \r\n ` nl)\r\n }\r\n }\r\n}","is_folder":false,"base64bin":false},{"name":"Storage.clj","data":"\r\n; https://developer.android.com/guide/topics/data/data-storage.html#filesInternal\r\n\r\n\r\nsystemclass StorageOutputStream {\r\n java7 FileOutputStream ( (imp 'java.io.FileOutputStream'))\r\n}\r\nsystemclass StorageInputStream {\r\n java7 FileInputStream ( (imp 'java.io.FileInputStream '))\r\n}\r\n\r\noperators {\r\n\r\n ; JavaScript localstorage functions using localforage\r\n localStorage _@(async):void (path:string value:string) {\r\n templates {\r\n es6 (`await (new Promise(resolve => { localforage.setItem(` (e 1) `, ` (e 2) `, resolve ) } ) )` )\r\n }\r\n }\r\n \r\n localStorage _@(optional async):string (path:string) {\r\n templates {\r\n es6 (`await (new Promise(resolve => { localforage.getItem(` (e 1) `, (err,value) => {\r\n if(err) resolve(null);\r\n resolve(value)\r\n }) } ))` )\r\n }\r\n }\r\n\r\n ; Android + UIContext functions\r\n file_exists _:boolean (ui:UIContext filename:string) {\r\n templates {\r\n java7 ( '__storageFileExist(' (e 1) '.getCtx(), ' (e 2) ')' (imp 'java.io.File')\r\n(create_polyfill `\r\nstatic boolean __storageFileExist(Context ctx, String fname){\r\n File file = ctx.getFileStreamPath(fname);\r\n return file.exists();\r\n}\r\n`)\r\n\r\n )\r\n }\r\n }\r\n\r\n open_private_output _:StorageOutputStream (ui:UIContext filename:string) {\r\n templates {\r\n java7 ( (e 1) '.getCtx().openFileOutput(' (e 2) ', Context.MODE_PRIVATE)')\r\n }\r\n }\r\n open_private_input _:StorageInputStream (ui:UIContext filename:string) {\r\n templates {\r\n java7 ( (e 1) '.getCtx().openFileInput(' (e 2) ')')\r\n }\r\n }\r\n read _:Bytes (stream:StorageInputStream) {\r\n templates {\r\n java7 ( '__readStream(' (e 1) ')' (imp 'java.io.BufferedInputStream') (imp 'java.io.FileNotFoundException')\r\n\r\n(create_polyfill `\r\nstatic byte[] __readStream(FileInputStream fis) {\r\n byte[] bytes = null;\r\n try {\r\n bytes = new byte[fis.available()];\r\n BufferedInputStream buf = new BufferedInputStream(fis);\r\n buf.read(bytes, 0, bytes.length);\r\n buf.close();\r\n } catch (FileNotFoundException e) {\r\n e.printStackTrace();\r\n } catch (IOException e) {\r\n e.printStackTrace();\r\n }\r\n return bytes;\r\n}\r\n`)\r\n\r\n )\r\n }\r\n }\r\n write _:void (stream:StorageOutputStream data:Bytes) {\r\n templates {\r\n java7 ( (e 1) '.write(' (e 2) ');')\r\n }\r\n }\r\n close _:void (stream:StorageOutputStream) {\r\n templates {\r\n java7 ( (e 1) '.close();')\r\n }\r\n }\r\n}","is_folder":false,"base64bin":false},{"name":"JSON.clj","data":"\r\n; for scala maybe\r\n; https://www.playframework.com/documentation/2.6.x/ScalaJson\r\n; Scala testing of JSON parsing:\r\n; https://scalafiddle.io/sf/S0EpdDK/1\r\n; https://scalafiddle.io/sf/S0EpdDK/5\r\n; https://msdn.microsoft.com/en-us/library/system.json.jsonobject(v=vs.95).aspx\r\n\r\n\r\nsystemclass JSONDataObject {\r\n es6 Object\r\n java7 JSONObject ( (imp \"org.json.JSONObject\") )\r\n go \"map[string]interface{}\"\r\n swift3 '[String:Any]'\r\n}\r\n\r\nsystemclass JSONArrayObject {\r\n es6 JSONArrayObject2\r\n java7 JSONArray ( (imp \"org.json.JSONArray\") )\r\n go \"[]interface{}\"\r\n swift3 '[Any]'\r\n}\r\n\r\nsystemclass JSONKeyValue {\r\n es6 JSONKeyValue2\r\n}\r\n\r\nsystemclass JSONValueUnion {\r\n es6 Object\r\n java7 Object\r\n go \"interface{}\"\r\n swift3 Any\r\n}\r\n\r\nsystemunion JSONValueUnion ( JSONDataObject JSONArrayObject string int double boolean )\r\nsystemunion JSONArrayUnion ( JSONDataObject string int double boolean )\r\nsystemunion JSONObjectUnion ( JSONKeyValue )\r\n\r\noperator type:JSONArrayObject all {\r\n fn forEach( cb:(_:void (item:JSONValueUnion index:int))) {\r\n def cnt (array_length self)\r\n def i 0\r\n while( cnt > 0 ) {\r\n def value (getValue self i)\r\n cb(value i)\r\n cnt = cnt - 1\r\n i = i + 1\r\n }\r\n }\r\n fn map:[S] (cb:(_:S (item:JSONValueUnion index:int)) to@(noeval):[S] ) {\r\n def len (array_length self)\r\n def res:[S] \r\n def i 0\r\n while ( i < len) {\r\n def it (getValue self i)\r\n push res (cb(it i))\r\n i = i + 1\r\n }\r\n return res\r\n } \r\n}\r\n\r\noperators {\r\n\r\n print _:void (e:JSONDataObject) {\r\n templates {\r\n ranger ( \"(print \" (e 1 ) \")\")\r\n es6 ( \r\n \"console.log(JSON.stringify(\" (e 1) \"));\" nl\r\n )\r\n java7 @macro(true) (\"print (to_string \" (e 1) \" )\" (imp \"org.json.JSONObject\"))\r\n } \r\n }\r\n\r\n getStr _@(optional):string (e:JSONDataObject key:string) {\r\n templates {\r\n php ( \"isset(\" (e 1) \"[\" (e 2) \"]) ? \" (e 1) \"[\" (e 2) \"] : null\" )\r\n es6 ( \r\n \"(typeof (\" (e 1) \" [\" (e 2) \"]) != \\\"string\\\" ) ? undefined : \" (e 1) \" [\" (e 2) \"] \" nl\r\n )\r\n swift3 ( (e 1) '[' (e 2) '] as? String ')\r\n ranger (\"(getStr \" (e 1) \" \" (e 2) \")\")\r\n java7 ( (e 1) \".isNull( \" (e 2) \" ) ? null : \" (e 1) \".optString(\" (e 2) \") \" )\r\n go ( \"r_get_opt_json_string(\" (e 1) \", \" (e 2) \")\"\r\n(create_polyfill \"\r\nfunc r_get_opt_json_string( data map[string]interface{}, key string ) *GoNullable {\r\n res := new(GoNullable)\r\n v, ok := data[key]\r\n if ok {\r\n if arr, ok := v.(string); ok {\r\n res.has_value = true\r\n res.value = arr\r\n return res\r\n }\r\n }\r\n res.has_value = false\r\n return res\r\n}\r\n\") \r\n\r\n )\r\n\r\n\r\n } \r\n } \r\n\r\n getInt _@(optional):int (e:JSONDataObject key:string) {\r\n templates {\r\n php ( \"isset(\" (e 1) \"[\" (e 2) \"]) ? \" (e 1) \"[\" (e 2) \"] : null\" )\r\n es6 ( \r\n \"isNaN( parseInt(\" (e 1) \" [\" (e 2) \"]) ) ? undefined : parseInt(\" (e 1) \" [\" (e 2) \"]) \" nl\r\n )\r\n swift3 ( (e 1) '[' (e 2) '] as? Int ')\r\n ranger( \"(getInt \" (e 1 )\" \" (e 2)\")\")\r\n java7 ( (e 1) \".isNull( \" (e 2) \" ) ? null : \" (e 1) \".optInt(\" (e 2) \") \" )\r\n go ( \"r_get_opt_json_int(\" (e 1) \", \" (e 2 ) \")\"\r\n(create_polyfill \"\r\nfunc r_get_opt_json_int( data map[string]interface{}, key string ) *GoNullable {\r\n res := new(GoNullable)\r\n v, ok := data[key]\r\n if ok {\r\n if arr, ok := v.(int); ok {\r\n res.has_value = true\r\n res.value = int64(arr)\r\n return res\r\n }\r\n }\r\n res.has_value = false\r\n return res\r\n}\r\n\") \r\n\r\n )\r\n \r\n } \r\n } \r\n\r\n getDouble _@(optional):double (e:JSONDataObject key:string) {\r\n templates {\r\n php ( \"isset(\" (e 1) \"[\" (e 2) \"]) ? \" (e 1) \"[\" (e 2) \"] : null\" )\r\n es6 ( \r\n \"isNaN( parseFloat(\" (e 1) \" [\" (e 2) \"]) ) ? undefined : parseFloat(\" (e 1) \" [\" (e 2) \"]) \" nl\r\n )\r\n swift3 ( (e 1) '[' (e 2) '] as? Double ')\r\n ranger( \"(getDouble \" (e 1 )\" \" (e 2)\")\")\r\n java7 ( (e 1) \".isNull( \" (e 2) \" ) ? null : \" (e 1) \".optDouble(\" (e 2) \") \" )\r\n go ( \"r_get_opt_json_double(\" (e 1) \", \" (e 2) \")\"\r\n(create_polyfill \"\r\nfunc r_get_opt_json_double( data map[string]interface{}, key string ) *GoNullable {\r\n res := new(GoNullable)\r\n v, ok := data[key]\r\n if ok {\r\n if arr, ok := v.(float64); ok {\r\n res.has_value = true\r\n res.value = arr\r\n return res\r\n }\r\n }\r\n res.has_value = false\r\n return res\r\n}\r\n\") \r\n\r\n )\r\n \r\n } \r\n } \r\n\r\n getBoolean _@(optional):boolean (e:JSONDataObject key:string) {\r\n templates {\r\n php ( \"isset(\" (e 1) \"[\" (e 2) \"]) ? \" (e 1) \"[\" (e 2) \"] : null\" )\r\n es6 ( \r\n \"typeof(\" (e 1) \" [\" (e 2) \"]) === \\\"undefined\\\" ? undefined :(\" (e 1) \" [\" (e 2) \"]) \" \r\n )\r\n swift3 ( (e 1) '[' (e 2) '] as? Bool ')\r\n ranger( \"(getBoolean \" (e 1 )\" \" (e 2)\")\")\r\n java7 ( (e 1) \".isNull( \" (e 2) \" ) ? null : \" (e 1) \".optBoolean(\" (e 2) \") \" )\r\n go ( \"r_get_opt_json_bool(\" (e 1) \", \" (e 2) \")\"\r\n(create_polyfill \"\r\nfunc r_get_opt_json_bool( data map[string]interface{}, key string ) *GoNullable {\r\n res := new(GoNullable)\r\n v, ok := data[key]\r\n if ok {\r\n if arr, ok := v.(bool); ok {\r\n res.has_value = true\r\n res.value = arr\r\n return res\r\n }\r\n }\r\n res.has_value = false\r\n return res\r\n}\r\n\") \r\n\r\n )\r\n } \r\n } \r\n\r\n getObject _@(optional):JSONDataObject (e:JSONDataObject key:string) {\r\n templates {\r\n php ( \"isset(\" (e 1) \"[\" (e 2) \"]) ? \" (e 1) \"[\" (e 2) \"] : null\" )\r\n es6 ( \r\n \"(\" (e 1) \"[\" (e 2) \"] instanceof Object ) ? \" (e 1) \" [\" (e 2) \"] : undefined \" \r\n )\r\n swift3 ( (e 1) '[' (e 2) '] as? [String:Any] ')\r\n ranger ( '(getObject ' (e 1) ' ' (e 2) ')')\r\n java7 ( \"__getJSONObj(\" (e 1) \", \" (e 2) \" )\" (imp 'org.json.JSONException')\r\n\r\n(create_polyfill '\r\nstatic JSONObject __getJSONObj(JSONObject o, String item) \r\n{\r\n try{\r\n if(o.isNull(item)) {\r\n return null;\r\n } \r\n return o.getJSONObject(item);\r\n } catch(JSONException se) {\r\n return null;\r\n }\r\n}\r\n') \r\n \r\n )\r\n go ( \"r_get_opt_json_obj(\" (e 1) \", \" (e 2) \")\"\r\n(create_polyfill \"\r\nfunc r_get_opt_json_obj( data map[string]interface{}, key string ) *GoNullable {\r\n res := new(GoNullable)\r\n v, ok := data[key]\r\n if ok {\r\n if arr, ok := v.(map[string]interface{}); ok {\r\n res.has_value = true\r\n res.value = arr\r\n return res\r\n }\r\n }\r\n res.has_value = false\r\n return res\r\n}\r\n\") \r\n\r\n )\r\n } \r\n } \r\n\r\n\r\n ; todo: proper array detection for optionals\r\n getArray _@(optional):JSONArrayObject (e:JSONDataObject key:string) {\r\n templates {\r\n php ( \"isset(\" (e 1) \"[\" (e 2) \"]) ? \" (e 1) \"[\" (e 2) \"] : null\" )\r\n es6 ( \r\n \"(\" (e 1) \"[\" (e 2) \"] instanceof Array ) ? \" (e 1) \" [\" (e 2) \"] : undefined \" \r\n )\r\n swift3 ( (e 1) '[' (e 2) '] as? [Any] ')\r\n ranger (\"(getArray \" (e 1) \" \" (e 2) \")\")\r\n java7 ( (e 1) \".isNull( \" (e 2) \" ) ? null : \" (e 1) \".getJSONArray(\" (e 2) \") \" )\r\n go ( \"r_get_opt_array(\" (e 1) \", \" (e 2) \")\"\r\n(create_polyfill '\r\nfunc r_get_opt_array( data map[string]interface{}, key string ) *GoNullable {\r\n res := new(GoNullable)\r\n v, ok := data[key]\r\n if ok {\r\n if arr, ok := v.([]interface{}); ok {\r\n res.has_value = true\r\n res.value = arr\r\n return res\r\n }\r\n }\r\n res.has_value = false\r\n return res\r\n}\r\n') \r\n\r\n )\r\n } \r\n } \r\n\r\n keys _:[string] (e:JSONDataObject) {\r\n templates {\r\n es6 ( \"Object.keys(\" (e 1) \")\")\r\n ranger( '(keys ' (e 1 )')')\r\n swift3 ( 'Array('(e 1) '.keys)')\r\n java7 ( \"__getJSONKeys(\" (e 1) \")\"\r\n; create template \r\n(create_polyfill \"\r\nstatic ArrayList<String> __getJSONKeys(JSONObject obj) \r\n{\r\n ArrayList<String> list = new ArrayList<String>(); \r\n try {\r\n JSONArray jsonArray = obj.names();\r\n if (jsonArray != null) { \r\n int len = jsonArray.length();\r\n for (int i=0;i<len;i++){ \r\n list.add(jsonArray.get(i).toString());\r\n } \r\n } \r\n } catch( Exception e) {\r\n }\r\n return list;\r\n} \r\n \") \r\n (imp \"org.json.JSONObject\") \r\n (imp \"org.json.JSONArray\") \r\n \r\n )\r\n go (\"(func() []string {\" nl I\r\n \"keys := reflect.ValueOf(\" (e 1) \").MapKeys()\" nl\r\n \"strkeys := make([]string, len(keys))\" nl\r\n \"for i := 0; i < len(keys); i++ {\" nl I\r\n \"strkeys[i] = keys[i].String()\" nl i \"}\" nl\r\n \"return strkeys\" nl i \"})()\"\r\n (imp \"reflect\"))\r\n php (\"array_keys(\" (e 1) \")\")\r\n }\r\n }\r\n\r\n\r\n isArray _:boolean (e:JSONValueUnion) {\r\n templates {\r\n php ( \"is_array(\" (e 1) \")\")\r\n es6 ( (e 1) \" instanceof Array\")\r\n ranger( \"(isArray \" (e 1 )\")\")\r\n go ( \"r_is_obj_array(\" (e 1) \")\"\r\n(create_polyfill \"\r\nfunc r_is_obj_array( data inteface{} ) bool {\r\n if _, ok := data.([]interface{}) ; ok {\r\n return ok\r\n }\r\n return false\r\n}\r\n\") \r\n )\r\n }\r\n }\r\n\r\n asArray _@(optional):JSONArrayObject (e:JSONValueUnion) {\r\n templates {\r\n es6 ( (e 1) \" instanceof Array ? \" (e 1 ) \" : undefined\")\r\n } \r\n }\r\n\r\n getValue _:JSONValueUnion (e:JSONArrayObject index:int) {\r\n templates {\r\n es6 ( (e 1) \"[\" (e 2) \"]\")\r\n ranger( \"(getValue \" (e 1) \" \" (e 2) \" )\")\r\n java7( '__getJSONValue(' (e 1) ', ' (e 2) ')' (imp 'org.json.JSONObject') (imp 'org.json.JSONArray') (imp 'org.json.JSONException')\r\n\r\n(create_polyfill '\r\nstatic Object __getJSONValue(JSONArray o, Integer item) \r\n{\r\n try{\r\n if(o.isNull(item)) {\r\n return null;\r\n } \r\n return o.get(item);\r\n } catch(JSONException se) {\r\n return null;\r\n }\r\n}\r\n') \r\n \r\n \r\n )\r\n swift3 ( (e 1) \"[\" (e 2) \"]\")\r\n go ( (e 1) \"[\" (e 2) \"]\")\r\n php ( (e 1) \"[\" (e 2) \"]\")\r\n }\r\n }\r\n\r\n array_length _:int (e:JSONArrayObject) {\r\n templates {\r\n ranger (\"(array_length \" (e 1) \")\")\r\n es6 ( (e 1) \".length\") \r\n java7 ( (e 1) \".length()\" )\r\n swift3 ( (e 1) \".count\")\r\n go( \"int64(len(\" (e 1) \"))\" )\r\n php ( \"count(\" (e 1) \")\" )\r\n }\r\n }\r\n\r\n set _@(moves@( 3 1 ) ):void (e@(mutates):JSONDataObject key:string value:enum) {\r\n templates {\r\n ranger ( \"(set \" (e 1) \" \" (e 2) \" \" (e 3) \" )\")\r\n es6 ( (e 1) \"[\" (e 2)\"] = \" (e 3) \";\")\r\n java7 ( (e 1) \".put(\" (e 2)\" , \" (e 3) \");\")\r\n go ( (e 1) \"[\" (e 2) \"] = \" (e 3) )\r\n swift3 ( (e 1) \"[\" (e 2) \"] = \" (e 3) )\r\n php ( (e 1) \"[\" (e 2) \"] = \" (e 3) \";\" )\r\n }\r\n }\r\n\r\n set _@(moves@( 3 1 ) ):void (e@(mutates):JSONDataObject key:string value:JSONValueUnion) {\r\n templates {\r\n ranger ( \"(set \" (e 1) \" \" (e 2) \" \" (e 3) \" )\")\r\n es6 ( (e 1) \"[\" (e 2)\"] = \" (e 3) \";\")\r\n java7 ( (e 1) \".put(\" (e 2)\" , \" (e 3) \");\")\r\n go ( (e 1) \"[\" (e 2) \"] = \" (e 3) )\r\n swift3 ( (e 1) \"[\" (e 2) \"] = \" (e 3) )\r\n php ( (e 1) \"[\" (e 2) \"] = \" (e 3) \";\" )\r\n }\r\n }\r\n\r\n from_string _@(throws):JSONDataObject (txt:string) {\r\n templates {\r\n ranger ( \"(from_string \" (e 1 ) \")\")\r\n es6 ( \r\n \"JSON.parse(\" (e 1) \")\"\r\n )\r\n swift3 ( 'try JSONSerialization.jsonObject(with: ' (e 1) ', options:[]) as! [String:Any]' (imp 'Foundation') )\r\n java7 (\"new JSONObject(\" (e 1) \")\" (imp \"org.json.JSONObject\") (plugin 'maven' ( (dep 'org.json' 'json' '20171018' ) ) ))\r\n go ( \"__r_json_to_interface(\" (e 1) \")\" (imp \"encoding/json\")\r\n\r\n(create_polyfill \"\r\nfunc __r_json_to_interface ( s string ) map[string]interface{} {\r\n\tb := []byte(s)\r\n\tvar f interface{}\r\n\t_ = json.Unmarshal(b, &f)\r\n\treturn f.(map[string]interface{})\r\n}\r\n\")\r\n\r\n )\r\n php ( \"r_json_to_array(\" (e 1) \")\"\r\n(create_polyfill \r\n\"\r\nfunction r_json_to_array($str) {\r\n $obj = json_decode($str, true);\r\n if( $obj == NULL) {\r\n throw new Exception('Invalid JSON');\r\n }\r\n return $obj;\r\n}\r\n\"\r\n\r\n) \r\n )\r\n } \r\n }\r\n\r\n to_string _:string (e:JSONDataObject) {\r\n templates {\r\n ranger ( \"(to_string \" (e 1 ) \")\")\r\n es6 ( \r\n \"JSON.stringify(\" (e 1) \")\"\r\n )\r\n swift3 ( '{ () -> String in ' nl I\r\n 'do {' nl I\r\n 'return String(data:try JSONSerialization.data(withJSONObject: ' (e 1) ', options:[]), encoding:.utf8)!'\r\n i nl '} catch {' nl I\r\n 'return \"\"'\r\n i nl '}'\r\n '}()' (imp 'Foundation') )\r\n java7 ( (e 1) \".toString()\" )\r\n go( \"__toJSONData(\" (e 1) \")\" (imp \"encoding/json\")\r\n(create_polyfill \"\r\nfunc __toJSONData ( data interface{} ) string {\r\n\tb, _ := json.Marshal(data)\r\n\treturn string(b)\r\n}\r\n\") \r\n )\r\n php ( \"json_encode(\" (e 1) \")\")\r\n } \r\n }\r\n\r\n to_string _:string (e:JSONArrayObject) {\r\n templates {\r\n ranger ( \"(to_string \" (e 1 ) \")\")\r\n es6 ( \r\n \"JSON.stringify(\" (e 1) \")\"\r\n )\r\n swift3 ( 'String(data:try JSONSerialization.data(with: ' (e 1) ', options:[], encoding:.utf8)!)' (imp 'Foundation') )\r\n java7 ( (e 1) \".toString()\" )\r\n go( \"__toJSONData(\" (e 1) \")\" (imp \"encoding/json\")\r\n(create_polyfill \"\r\nfunc __toJSONData ( data interface{} ) string {\r\n\tb, _ := json.Marshal(data)\r\n\treturn string(b)\r\n}\r\n\") \r\n )\r\n php ( \"json_encode(\" (e 1) \")\")\r\n } \r\n }\r\n\r\n push _@(moves@( 2 1 ) ):void ( e@(mutates):JSONArrayObject el:JSONArrayUnion) {\r\n templates {\r\n ranger ( \"(push \" (e 1 ) \" \" (e 2) \" )\")\r\n es6 ( (e 1) \".push(\" (e 2) \")\")\r\n java7 ( (e 1) \".put(\" (e 2) \");\")\r\n swift3 ( (e 1) \".append(\" (e 2) \");\")\r\n go( (e 1) \" = append(\" (e 1) \",\" (e 2) \")\")\r\n php ( \"array_push(\" (e 1) \", \" (e 2) \");\")\r\n } \r\n }\r\n json_array json@(expands):JSONArrayObject () {\r\n templates {\r\n es6 (\"[]\")\r\n swift3 ( '[Any]()' )\r\n ranger (\"(json_array )\")\r\n java7 (\"new JSONArray()\" (imp \"org.json.JSONArray\") (plugin 'maven' ( (dep 'org.json' 'json' '20171018' ) ) ))\r\n go ( \"make([]interface{},0)\" )\r\n php ( \"array()\" )\r\n } \r\n }\r\n json_object json:JSONDataObject () {\r\n templates {\r\n es6 (\"{}\")\r\n swift3 ( '[String:Any]()' )\r\n ranger (\"(json_object )\")\r\n java7 (\"new JSONObject()\" (imp \"org.json.JSONObject\") (plugin 'maven' ( (dep 'org.json' 'json' '20171018' ) ) ))\r\n go ( \"make(map[string]interface{})\" )\r\n php ( \"array()\")\r\n } \r\n }\r\n json_array json@(expands):JSONArrayObject ( e@(block):JSONArrayUnion ) {\r\n templates {\r\n es6 (\"[\" ( repeat_from 1 ( (block 1) ) ) \"]\")\r\n swift3 (\"[\" ( repeat_from 1 ( (block 1) ) ) \"]\")\r\n ranger (\"(json_array \" ( repeat 1 ( (block 1) ) ) \")\")\r\n java7 (\"new JSONArray\" (imp \"org.json.JSONArray\") (plugin 'maven' ( (dep 'org.json' 'json' '20171018' ) ) ))\r\n go ( \"make([]interface{},0)\" )\r\n php ( \"array()\" )\r\n } \r\n }\r\n json_obj json@(expands):JSONDataObject ( e@(block):JSONObjectUnion ) {\r\n templates {\r\n es6 (\"{\" nl I ( repeat_from 1 ( (block 1) ) ) i nl \"}\")\r\n ranger (\"( json_obj \" nl I ( repeat 1 ( (block 1) ) ) i nl \")\")\r\n }\r\n }\r\n\r\n json_obj.attr _:JSONKeyValue (name:string value:string) {\r\n templates {\r\n es6 (\r\n \"\\\"\" (str 1) \"\\\": \" (e 2) \"\"\r\n )\r\n ranger (\"(json.attr \" (e 1) \" \" (e 2) \")\")\r\n }\r\n } \r\n\r\n json.attr _:JSONKeyValue (name:string value:string) {\r\n templates {\r\n es6 (\r\n \"\\\"\" (str 1) \"\\\": \" (e 2) \"\"\r\n )\r\n ranger (\"(json.attr \" (e 1) \" \" (e 2) \")\")\r\n }\r\n }\r\n json.attr _:JSONKeyValue (name:string value:int) {\r\n templates {\r\n es6 (\r\n \"\\\"\" (str 1) \"\\\": \" (e 2) \"\"\r\n )\r\n ranger (\"(json.attr \" (e 1) \" \" (e 2) \")\")\r\n }\r\n } \r\n json.attr _:JSONKeyValue (name:string value:double) {\r\n templates {\r\n es6 (\r\n \"\\\"\" (str 1) \"\\\": \" (e 2) \"\"\r\n )\r\n ranger (\"(json.attr \" (e 1) \" \" (e 2) \")\")\r\n }\r\n } \r\n \r\n json_obj.attr _:JSONKeyValue (name:string value:JSONDataObject) {\r\n templates {\r\n es6 (\r\n \"\\\"\" (str 1) \"\\\" : \" (e 2) \"\"\r\n )\r\n ranger (\"(json.attr \" (e 1) \" \" (e 2) \")\")\r\n }\r\n } \r\n \r\n json.attr _:JSONKeyValue (name:string value:JSONDataObject) {\r\n templates {\r\n es6 (\r\n \"\\\"\" (str 1) \"\\\" : \" (e 2) \"\"\r\n )\r\n ranger (\"(json.attr \" (e 1) \" \" (e 2) \")\")\r\n }\r\n } \r\n json_obj.attr _:JSONKeyValue (name:string value:JSONArrayObject) {\r\n templates {\r\n es6 (\r\n \"\\\"\" (str 1) \"\\\" : \" (e 2) \"\"\r\n )\r\n ranger (\"(json.attr \" (e 1) \" \" (e 2) \")\")\r\n }\r\n } \r\n json.attr _:JSONKeyValue (name:string value:JSONArrayObject) {\r\n templates {\r\n es6 (\r\n \"\\\"\" (str 1) \"\\\" : \" (e 2) \"\"\r\n )\r\n ranger (\"(json.attr \" (e 1) \" \" (e 2) \")\")\r\n }\r\n } \r\n}","is_folder":false,"base64bin":false},{"name":"hello_world.clj","data":"\r\n\r\nclass tester {\r\n static fn main () {\r\n print \"Hello World!\"\r\n }\r\n}\r\n\r\n ","is_folder":false,"base64bin":false}]},"envVars":{},"commandLine":{"flags":{},"params":{},"values":[]}}
|