ranger-compiler 2.1.69 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +103 -0
- package/README.md +991 -96
- 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/{bin/output.js → dist/rgrc.js} +15377 -7935
- package/dist/stdops.rgr +168 -0
- package/package.json +196 -38
- 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/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 -800
- 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 -1042
- 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/api.js.map +0 -1
- package/dist/bin/compiler.d.ts +0 -1638
- package/dist/bin/compiler.js +0 -32444
- package/dist/bin/compiler.js.map +0 -1
- 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/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/lang_data.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var lang_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 }\r\n\r\n commands {\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 }\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 ; Command line arguments\r\n shell_arg cmdArg:string (index:int) {\r\n templates {\r\n cpp ( \"std::string(argv[\" (e 1) \" + 1])\")\r\n php ( \"$argv[\" (e 1) \" + 1]\" )\r\n java7 ( \"args[\" (e 1) \"]\")\r\n go ( \"os.Args[\" (e 1) \" + 1]\" (imp \"os\"))\r\n swift3 (\"CommandLine.arguments[\" (e 1) \" + 1]\")\r\n es6 ( \"process.argv[ 2 + process.execArgv.length + \" (e 1) \"]\")\r\n ranger (\"( shell_arg \" (e 1) \" )\")\r\n }\r\n }\r\n\r\n shell_arg_cnt cmdArg:int () {\r\n templates {\r\n cpp ( \"argc - 1\")\r\n swift3 (\"CommandLine.arguments.count - 1\")\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 - process.execArgv.length)\" )\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 ranger (\"( current_directory )\")\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) \" + \\\"/\\\" + \" (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(process.cwd() + \\\"/\\\" + \" (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 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(process.cwd() + \\\"/\\\" + \" \r\n (e 1) \" + \\\"/\\\" \" (e 2) \")\")\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\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(process.cwd() + \\\"/\\\" + \" \r\n (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\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>\") \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(process.cwd() + \\\"/\\\" + \" \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\r\n read_file cmdReadFile@(optional):string (path:string filename:string) {\r\n\r\n templates {\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 ( \"Optional.of(readFile(\" (e 1) \" + \\\"/\\\" + \" (e 2) \" , StandardCharsets.UTF_8 ))\" \r\n (imp \"java.util.Optional\")\r\n (imp \"java.nio.file.Paths\") \r\n (imp \"java.io.File\")\r\n (imp \"java.nio.file.Files\") \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( process.cwd() + '/' + \" (e 1) \" + '/' + \" (e 2) \" , 'utf8'))\" )\r\n }\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 = 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) \" = Optional.of(\" (e 2) \");\" nl (imp \"java.util.Optional\") ) \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 (imp \"java.util.Optional\") ) \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 ( \"Optional.of(\" (e 1 ) \")\" (imp \"java.util.Optional\"))\r\n go ( (e 1 ) )\r\n php ( (e 1 ) )\r\n * ( (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 unwrap cmdUnwrap:int ( arg@(optional):int ) {\r\n templates {\r\n cpp ( (e 1) \".value\" )\r\n }\r\n } \r\n unwrap cmdUnwrap:double ( arg@(optional):double ) {\r\n templates {\r\n cpp ( (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) \".Value\" )\r\n java7 ( (e 1) \".get()\" (imp \"java.util.Optional\") )\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\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@(optional returns@(1)):T ( value@(optional):T ) {\r\n templates {\r\n java7 ( (custom _) )\r\n ranger ( nl \"return \" (e 1) nl ) \r\n * ( \"return \" (ifa 1 \";\") (e 1) (eif _) \";\" )\r\n }\r\n } \r\n \r\n return cmdReturn@(returns@(1)):T ( value:T ) {\r\n templates {\r\n ranger ( nl \"return \" (e 1) nl ) \r\n * ( \"return \" (ifa 1 \";\") (e 1) (eif _) \";\" )\r\n }\r\n } \r\n\r\n return cmdReturn@():void ( ) {\r\n templates {\r\n cpp ( (custom _ ) )\r\n ranger ( nl \"return\" nl ) \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) \" = \" (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: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 ( \"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 + 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 ? cmdTernary:T ( condition:boolean left:T right:T ) { \r\n templates { \r\n go ( \"(func() \" (typeof 2) \" { if \" (e 1) \" { return \" (e 2) \" } else { return \" (e 3) \"} }())\" ) \r\n * ( (e 1) \" ? \" (e 2) \" : \" (e 3) ) \r\n } \r\n }\r\n\r\n ?? cmdNullCoalesce: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 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 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_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\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 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 * ( 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 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 \"__b__.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 \"__b__.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 \"__c__.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 \"__c__.break;\" nl )\r\n * ( nl \"continue;\" nl )\r\n }\r\n }\r\n\r\n\r\n while cmdWhile:void ( condition:boolean whileLoop: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 __b__ = new Breaks;\" nl\r\n \"__b__.breakable { \" \r\n nl I \r\n \"while (\" (e 1) \") {\" nl\r\n I\r\n \"val __c__ = new Breaks;\" nl\r\n \"__c__.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 [] cmdArrayLiteral:[T] ( typeDef@(ignore):T listOf:expression ) {\r\n templates {\r\n ranger ( \"([] _:\" (typeof 1) \"(\" (list 2) \"))\")\r\n go ( \"[]\" (typeof 1) \"{\" (comma 2) \"}\")\r\n cpp ( \"{\" (comma 2) \"}\")\r\n java7 ( \"new ArrayList<\" (typeof 1) \">(Arrays.asList(\" (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\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) \".isPresent()\") \r\n csharp ((e 1) \".HasValue\") \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\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) \".isPresent()\") \r\n csharp (\"!\" (e 1) \".HasValue\")\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\\\"\")\r\n }\r\n } \r\n \r\n throw cmdThrow: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 ( run_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 php ( nl \"try {\" nl I (block 1) i nl \"} catch( Exception $e) {\" nl I (block 2) i nl \"}\" nl ) \r\n scala ( nl \"try {\" nl I (block 1) i nl \"} catch {\" 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 )\r\n go ( nl (block 1) nl )\r\n ; with swift there is no do without try...\r\n swift3 ( nl (block 1) 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 scala ( \r\n (forkctx _ ) (def 2) (def 3) \r\n \"try {\" nl I\r\n \"val __break__ = new Breaks;\"\r\n \"__break__.breakable { \" \r\n nl I \r\n \"for ( \" (e 3) \" <- 0 until \" (e 1) \".length ) {\" nl I \"val \" (e 2) \" = \" (e 1) \"(\" (e 3) \")\" nl (block 4) nl i \"}\" \r\n i nl\r\n \"}\"\r\n i nl \"} \" nl\r\n (imp \"scala.util.control._\")\r\n ) \r\n cpp ( (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 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 ) \")\")\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 ( (e 1) \".Split(\" (e 2) \")\")\r\n swift3 ( (e 1) \".components( separatedBy : \" (e 2) \")\")\r\n java7( \"new ArrayList<String>(Arrays.asList(\" (e 1) \".split(\" (e 2) \")))\" )\r\n php ( \"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>\")\r\n\r\n(create_polyfill\r\n\"\r\nstd::vector<std::string> r_str_split(std::string str, std::string delimiter) {\r\n size_t first_index = 0;\r\n size_t prev_index = 0;\r\n std::vector<std::string> res;\r\n while( std::string::npos != ( first_index = str.find_first_of( delimiter , prev_index ) )) {\r\n res.push_back( str.substr( prev_index, first_index - prev_index) );\r\n prev_index = first_index + 1;\r\n }\r\n if(res.size() == 0 ) {\r\n res.push_back(str);\r\n } \r\n return res;\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 ( (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 ( \"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 ( \"ord(\" (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) \" )\")\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 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( ( \" (e 1) \" as NSString ).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 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 ( \"\" (e 1) \".substr(\" (e 2) \", \" (e 3) \" - \" (e 2) \")\") \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) \"[0])\") \r\n java7 ( \"((\" (e 1) \".getBytes())[0])\") \r\n swift3 ( \"UInt8( ( \" (e 1) \" as NSString ).character( at: 0 ) )\")\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_int cmdDoubleToString: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.FormatFloat(\" (e 1) \",'f', 6, 64)\" (imp \"strconv\"))\r\n swfit3 (\"String(\" (e 1) \")\") \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 ; 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 ( \"Optional.of(Integer.parseInt(\" (e 1) \" ))\") \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 ( \"intval(\" (e 1) \")\")\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 * ( \"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 ( \"Optional.of(Double.parseDouble(\" (e 1) \" ))\") \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 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) \")\" )\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 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 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 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 \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 ( \"Optional.ofNullable(\" (e 1) \".get(\" (e 2) \"))\" (imp \"java.util.Optional\"))\r\n rust ( (e 1) \".get(\" (e 2) \")\" )\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 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 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 ( 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 cmdIndexOf:int ( array:[T] element:T ) { \r\n templates {\r\n ranger ( \"(indexOf \" (e 1) \" \" (e 2) \")\")\r\n\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)[0]\")\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 * ( (e 1) \".splice(\" (e 2) \", 1).pop();\" ) \r\n }\r\n }\r\n\r\n ; TODO: optional push to list....\r\n push cmdPush@(moves@( 2 1 ) ):void ( array@(mutates):[T] item@(optional):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 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 \r\n\r\n array_length cmdArrayLength:int ( array:[T] ) { \r\n templates {\r\n ranger ( \"(array_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 rust ( (e 1 ) \".len()\" )\r\n go ( \"int64(len(\" (e 1 ) \"))\" )\r\n kotlin ( (e 1) \".size\" ) \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 ( (e 1) \".remove(\" (e 2) \")\" )\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>\"))\r\n kotlin ( nl \"println( \" (e 1) \" )\" nl ) \r\n scala ( nl \"println( \" (e 1) \" )\" nl ) \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 ; ----------------------------------------------------------------------------------------------------------\r\n ; conversions\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 java7 (\"Double.valueOf(\" (e 1) \")\")\r\n cpp (\"(double)(\" (e 1) \")\")\r\n php ( (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 ) { templates { * ( (e 1) \" == \" (e 2) ) } }\r\n == cmdEqual:boolean ( left:char right:int ) { templates { * ( (e 1) \" == \" (e 2) ) } }\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 { * ( (e 1) \" <= \" (e 2) ) } \r\n }\r\n <= cmdLte:boolean ( left:int right:char ) { \r\n templates { * ( (e 1) \" <= \" (e 2) ) } \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 { * ( (e 1) \" < \" (e 2) ) } \r\n }\r\n\r\n < cmdLt:boolean ( left:char right:int ) { \r\n templates { * ( (e 1) \" < \" (e 2) ) } \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 { * ( (e 1) \" != \" (e 2) ) } \r\n }\r\n\r\n != cmdNeq:boolean ( left:char right:int ) { \r\n templates { * ( (e 1) \" != \" (e 2) ) } \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 { * ( (e 1) \" >= \" (e 2) ) } \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 { * ( (e 1) \" > \" (e 2) ) } \r\n }\r\n > cmdGt:boolean ( left:char right:int ) { \r\n templates { * ( (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) \"->has_value && \" \"\" (e 2) \"->has_value\") \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) \"->has_value\") \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) \"->has_value && \" (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"
|
package/index.html
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<style>
|
|
6
|
-
html, body {
|
|
7
|
-
margin:0px;
|
|
8
|
-
padding:0px;
|
|
9
|
-
}
|
|
10
|
-
</style>
|
|
11
|
-
</head>
|
|
12
|
-
<body>
|
|
13
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/redom/3.2.1/redom.js"></script>
|
|
14
|
-
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.8/ace.js"></script>
|
|
15
|
-
<script src="fiddle/lang_data.js"></script>
|
|
16
|
-
<script src="fiddle/browser_editor.js"></script>
|
|
17
|
-
</body>
|
|
18
|
-
</html>
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
Import "RangerWebService.clj"
|
|
3
|
-
|
|
4
|
-
class HttpTester {
|
|
5
|
-
|
|
6
|
-
fn tester:void () {
|
|
7
|
-
listen (new HTTPServer (1999)) {
|
|
8
|
-
|
|
9
|
-
def path_to_route:string (get_url_path)
|
|
10
|
-
write_header "text/html"
|
|
11
|
-
switch path_to_route {
|
|
12
|
-
case "/koodiklinikka" {
|
|
13
|
-
respond "<!DOCTYPE html>
|
|
14
|
-
<html>
|
|
15
|
-
<body style='background-color:#39a'>
|
|
16
|
-
<div> Served from " + path_to_route + " </div>
|
|
17
|
-
<img src='https://raw.githubusercontent.com/koodiklinikka/koodiklinikka.fi/master/src/assets/images/logo.png'/>
|
|
18
|
-
</body>
|
|
19
|
-
</html>"
|
|
20
|
-
}
|
|
21
|
-
default {
|
|
22
|
-
respond "nothing to see here!"
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
sfn main@(main):void () {
|
|
29
|
-
def testObj:HttpTester (new HttpTester ())
|
|
30
|
-
testObj.tester()
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
; --------------------------------------------------------------------------------------
|
|
3
|
-
; Web service for Go
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
; --------------------------------------------------------------------------------------
|
|
7
|
-
; Support classes
|
|
8
|
-
|
|
9
|
-
class HTTPServer {
|
|
10
|
-
|
|
11
|
-
def port:int 80
|
|
12
|
-
|
|
13
|
-
Constructor (p:int) {
|
|
14
|
-
port = p
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
class RequestResponse {
|
|
20
|
-
def res:HTTPResponse
|
|
21
|
-
Constructor( r:HTTPResponse ) {
|
|
22
|
-
res = r
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
; --------------------------------------------------------------------------------------
|
|
27
|
-
; system classes
|
|
28
|
-
|
|
29
|
-
systemclass HTTPResponse {
|
|
30
|
-
go http.ResponseWriter
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
systemclass HTTPRequest {
|
|
34
|
-
go http.Request
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
; --------------------------------------------------------------------------------------
|
|
41
|
-
; operators
|
|
42
|
-
|
|
43
|
-
operators {
|
|
44
|
-
|
|
45
|
-
get_url_path http:string () {
|
|
46
|
-
templates {
|
|
47
|
-
go ("__r.URL.Path")
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
write_header http:void ( txt:string) {
|
|
52
|
-
templates {
|
|
53
|
-
go ( "__w.Header().Set(\"Content-Type\", " (e 1) ") " nl )
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
respond http:void ( txt:string) {
|
|
58
|
-
templates {
|
|
59
|
-
go ( "__w.Write([]byte(" (e 1) ")) " nl )
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
get_response http:HTTPResponse () {
|
|
64
|
-
templates {
|
|
65
|
-
go ( "&__w" )
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
listen http:void (server:HTTPServer handler:block) {
|
|
70
|
-
templates {
|
|
71
|
-
go (
|
|
72
|
-
"http.HandleFunc(\"/\", func(__w http.ResponseWriter, __r *http.Request) {" nl
|
|
73
|
-
I (e 2) i nl "})" nl
|
|
74
|
-
"http.ListenAndServe(\":\"+fmt.Sprintf(\"%v\"," (e 1) ".port), nil)" (imp "net/http")
|
|
75
|
-
(imp "fmt")
|
|
76
|
-
)
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|