ranger-compiler 2.1.70 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/CHANGELOG.md +114 -0
  2. package/README.md +956 -133
  3. package/{compiler/Lang.clj → dist/Lang.rgr} +2345 -75
  4. package/dist/README.md +116 -0
  5. package/dist/{bin/api.d.ts → api.d.ts} +430 -154
  6. package/dist/api.js +34345 -0
  7. package/{lib/Ajax.clj → dist/lib/Ajax.rgr} +1 -1
  8. package/{lib/CmdParams.clj → dist/lib/CmdParams.rgr} +72 -72
  9. package/{lib/Crypto.clj → dist/lib/Crypto.rgr} +1 -1
  10. package/{lib/DOMLib.clj → dist/lib/DOMLib.rgr} +2 -2
  11. package/{lib/Engine3D.clj → dist/lib/Engine3D.rgr} +1 -1
  12. package/{lib/ImmutableVector.clj → dist/lib/ImmutableVector.rgr} +364 -364
  13. package/{lib/IndexedDB.clj → dist/lib/IndexedDB.rgr} +1 -1
  14. package/{lib/JSON.clj → dist/lib/JSON.rgr} +105 -2
  15. package/{lib/JinxProcess.clj → dist/lib/JinxProcess.rgr} +3 -3
  16. package/{lib/Storage.clj → dist/lib/Storage.rgr} +1 -1
  17. package/{lib/Timers.clj → dist/lib/Timers.rgr} +176 -170
  18. package/{lib/ViewLib.clj → dist/lib/ViewLib.rgr} +1 -1
  19. package/dist/lib/lib/ACEEditor.rgr +5 -0
  20. package/dist/lib/lib/Ajax.rgr +196 -0
  21. package/dist/lib/lib/CmdParams.rgr +72 -0
  22. package/dist/lib/lib/Crypto.rgr +90 -0
  23. package/dist/lib/lib/DOMLib.rgr +307 -0
  24. package/{examples/3D/Engine3D.clj → dist/lib/lib/Engine3D.rgr} +870 -857
  25. package/dist/lib/lib/ImmutableVector.rgr +364 -0
  26. package/dist/lib/lib/IndexedDB.rgr +32 -0
  27. package/{compiler/JSON.clj → dist/lib/lib/JSON.rgr} +106 -3
  28. package/dist/lib/lib/JinxProcess.rgr +838 -0
  29. package/dist/lib/lib/SQL.rgr +44 -0
  30. package/dist/lib/lib/ServiceLib.rgr +9 -0
  31. package/dist/lib/lib/Storage.rgr +89 -0
  32. package/dist/lib/lib/Time.rgr +75 -0
  33. package/dist/lib/lib/Timers.rgr +176 -0
  34. package/dist/lib/lib/TypedArrays.rgr +14 -0
  35. package/dist/lib/lib/ViewLib.rgr +851 -0
  36. package/dist/lib/lib/WebLib.rgr +47 -0
  37. package/dist/lib/lib/WebServerLib.rgr +137 -0
  38. package/{lib/ranger-dir.clj → dist/lib/lib/ranger-dir.rgr} +1 -1
  39. package/{compiler/stdlib.clj → dist/lib/lib/stdlib.rgr} +42 -19
  40. package/{lib/stdops.clj → dist/lib/lib/stdops.rgr} +1 -1
  41. package/dist/lib/ranger-dir.rgr +175 -0
  42. package/{lib/stdlib.clj → dist/lib/stdlib.rgr} +2 -2
  43. package/dist/lib/stdops.rgr +168 -0
  44. package/dist/package.json +47 -0
  45. package/{compiler/bin/output.js → dist/rgrc.js} +15377 -7936
  46. package/dist/stdops.rgr +168 -0
  47. package/package.json +196 -39
  48. package/adventofcode/day1/bin/LambdaSignature1.java +0 -3
  49. package/adventofcode/day1/bin/LambdaSignature2.java +0 -3
  50. package/adventofcode/day1/bin/LambdaSignature3.java +0 -3
  51. package/adventofcode/day1/bin/day1.cpp +0 -124
  52. package/adventofcode/day1/bin/day1.go +0 -75
  53. package/adventofcode/day1/bin/day1.js +0 -45
  54. package/adventofcode/day1/bin/day1.php +0 -46
  55. package/adventofcode/day1/bin/day1.scala +0 -48
  56. package/adventofcode/day1/bin/day1.swift +0 -48
  57. package/adventofcode/day1/bin/day1_part2.cpp +0 -180
  58. package/adventofcode/day1/bin/day1_part2.go +0 -123
  59. package/adventofcode/day1/bin/day1_part2.js +0 -76
  60. package/adventofcode/day1/bin/day1_part2.php +0 -88
  61. package/adventofcode/day1/bin/day1_part2.scala +0 -81
  62. package/adventofcode/day1/bin/day1_part2.swift +0 -91
  63. package/adventofcode/day1/bin/day_one.java +0 -38
  64. package/adventofcode/day1/bin/day_one_part_two.java +0 -57
  65. package/adventofcode/day1/bin/operatorsOf.java +0 -37
  66. package/adventofcode/day1/bin/operatorsOf_5.java +0 -10
  67. package/adventofcode/day1/bin/operatorsOfboolean_5.java +0 -10
  68. package/adventofcode/day1/bin/variant.hpp +0 -2416
  69. package/adventofcode/day1/compile.bat +0 -7
  70. package/adventofcode/day1/compile2.bat +0 -7
  71. package/adventofcode/day1/day1.clj +0 -19
  72. package/adventofcode/day1/day1_part2.clj +0 -43
  73. package/adventofcode/day1/input1.txt +0 -1
  74. package/adventofcode/day2/bin/LambdaSignature1.class +0 -0
  75. package/adventofcode/day2/bin/LambdaSignature1.java +0 -3
  76. package/adventofcode/day2/bin/LambdaSignature2.class +0 -0
  77. package/adventofcode/day2/bin/LambdaSignature2.java +0 -3
  78. package/adventofcode/day2/bin/day2.cpp +0 -133
  79. package/adventofcode/day2/bin/day2.go +0 -85
  80. package/adventofcode/day2/bin/day2.js +0 -45
  81. package/adventofcode/day2/bin/day2.php +0 -59
  82. package/adventofcode/day2/bin/day2.scala +0 -54
  83. package/adventofcode/day2/bin/day2.swift +0 -62
  84. package/adventofcode/day2/bin/day2_part2.cpp +0 -150
  85. package/adventofcode/day2/bin/day2_part2.go +0 -101
  86. package/adventofcode/day2/bin/day2_part2.js +0 -54
  87. package/adventofcode/day2/bin/day2_part2.php +0 -80
  88. package/adventofcode/day2/bin/day2_part2.scala +0 -68
  89. package/adventofcode/day2/bin/day2_part2.swift +0 -82
  90. package/adventofcode/day2/bin/day_two.java +0 -61
  91. package/adventofcode/day2/bin/day_two_part_two$1$1$1.class +0 -0
  92. package/adventofcode/day2/bin/day_two_part_two$1$1.class +0 -0
  93. package/adventofcode/day2/bin/day_two_part_two$1.class +0 -0
  94. package/adventofcode/day2/bin/day_two_part_two.class +0 -0
  95. package/adventofcode/day2/bin/day_two_part_two.java +0 -80
  96. package/adventofcode/day2/bin/operatorsOf.class +0 -0
  97. package/adventofcode/day2/bin/operatorsOf.java +0 -18
  98. package/adventofcode/day2/bin/variant.hpp +0 -2416
  99. package/adventofcode/day2/compile.bat +0 -7
  100. package/adventofcode/day2/compile2.bat +0 -7
  101. package/adventofcode/day2/day2.clj +0 -60
  102. package/adventofcode/day2/day2_part2.clj +0 -69
  103. package/adventofcode/day2/input1.txt +0 -1
  104. package/adventofcode/day3/bin/Grid.java +0 -92
  105. package/adventofcode/day3/bin/GridRow.java +0 -5
  106. package/adventofcode/day3/bin/LambdaSignature1.java +0 -3
  107. package/adventofcode/day3/bin/LambdaSignature2.java +0 -3
  108. package/adventofcode/day3/bin/LambdaSignature3.java +0 -3
  109. package/adventofcode/day3/bin/day3.cpp +0 -64
  110. package/adventofcode/day3/bin/day3.go +0 -55
  111. package/adventofcode/day3/bin/day3.js +0 -42
  112. package/adventofcode/day3/bin/day3.php +0 -41
  113. package/adventofcode/day3/bin/day3.scala +0 -52
  114. package/adventofcode/day3/bin/day3.swift +0 -43
  115. package/adventofcode/day3/bin/day3_part2.cpp +0 -216
  116. package/adventofcode/day3/bin/day3_part2.go +0 -188
  117. package/adventofcode/day3/bin/day3_part2.js +0 -123
  118. package/adventofcode/day3/bin/day3_part2.php +0 -135
  119. package/adventofcode/day3/bin/day3_part2.swift +0 -131
  120. package/adventofcode/day3/bin/day_three_part_two.java +0 -43
  121. package/adventofcode/day3/bin/day_two.java +0 -42
  122. package/adventofcode/day3/bin/operatorsOf.java +0 -14
  123. package/adventofcode/day3/bin/variant.hpp +0 -2416
  124. package/adventofcode/day3/compile.bat +0 -7
  125. package/adventofcode/day3/compile2.bat +0 -7
  126. package/adventofcode/day3/day3.clj +0 -42
  127. package/adventofcode/day3/day3_part2.clj +0 -112
  128. package/adventofcode/day4/bin/LambdaSignature1.java +0 -3
  129. package/adventofcode/day4/bin/day4.cpp +0 -118
  130. package/adventofcode/day4/bin/day4.go +0 -75
  131. package/adventofcode/day4/bin/day4.js +0 -40
  132. package/adventofcode/day4/bin/day4.php +0 -52
  133. package/adventofcode/day4/bin/day4.scala +0 -47
  134. package/adventofcode/day4/bin/day4.swift +0 -56
  135. package/adventofcode/day4/bin/day4_part2.go +0 -129
  136. package/adventofcode/day4/bin/day4_part2.js +0 -72
  137. package/adventofcode/day4/bin/day_four.java +0 -41
  138. package/adventofcode/day4/bin/inputData.java +0 -7
  139. package/adventofcode/day4/bin/operatorsOf.java +0 -11
  140. package/adventofcode/day4/bin/variant.hpp +0 -2416
  141. package/adventofcode/day4/compile.bat +0 -7
  142. package/adventofcode/day4/compile2.bat +0 -7
  143. package/adventofcode/day4/day4.clj +0 -32
  144. package/adventofcode/day4/day4_part2.clj +0 -44
  145. package/adventofcode/day4/input.clj +0 -519
  146. package/adventofcode/day4/input.txt +0 -512
  147. package/bin/api.ts +0 -24471
  148. package/bin/compiler.ts +0 -24482
  149. package/bin/output.js +0 -23819
  150. package/compiler/ColorConsole.clj +0 -22
  151. package/compiler/ContextOperators.clj +0 -75
  152. package/compiler/FlowEnterVarDef.clj +0 -223
  153. package/compiler/InputFileSystem.clj +0 -276
  154. package/compiler/RangerDocs.clj +0 -7
  155. package/compiler/TFactory.clj +0 -146
  156. package/compiler/TFiles.clj +0 -23
  157. package/compiler/TFlow.clj +0 -39
  158. package/compiler/TNodeFactory.clj +0 -84
  159. package/compiler/TTypes.clj +0 -188
  160. package/compiler/VirtualCompiler.clj +0 -807
  161. package/compiler/bin/ng_Compiler.js +0 -23779
  162. package/compiler/commonmark_plugin.clj +0 -359
  163. package/compiler/feat2.bat +0 -2
  164. package/compiler/feats.bat +0 -9
  165. package/compiler/feature_tests.clj +0 -192
  166. package/compiler/index.js +0 -2
  167. package/compiler/issue_57.clj +0 -25
  168. package/compiler/makefile_plugin.clj +0 -135
  169. package/compiler/markdown_plugin.clj +0 -386
  170. package/compiler/maven_plugin.clj +0 -162
  171. package/compiler/ng_AndroidPageWriter.clj +0 -299
  172. package/compiler/ng_CodeNode.clj +0 -756
  173. package/compiler/ng_CodeNodeCompilerExtensions.clj +0 -839
  174. package/compiler/ng_Compiler.clj +0 -49
  175. package/compiler/ng_CompilerGeneric.clj +0 -260
  176. package/compiler/ng_CompilerOrig.clj +0 -854
  177. package/compiler/ng_DictNode.clj +0 -346
  178. package/compiler/ng_DictNode2.clj +0 -316
  179. package/compiler/ng_Execute.clj +0 -138
  180. package/compiler/ng_Execute1.clj +0 -129
  181. package/compiler/ng_FlowWork.clj +0 -3951
  182. package/compiler/ng_LiveCompiler.clj +0 -1109
  183. package/compiler/ng_RagnerJavaScriptClassWriter.clj +0 -402
  184. package/compiler/ng_RangerActiveOperators.clj +0 -86
  185. package/compiler/ng_RangerAppClassDesc.clj +0 -400
  186. package/compiler/ng_RangerAppEnums.clj +0 -86
  187. package/compiler/ng_RangerAppFunctionDesc.clj +0 -127
  188. package/compiler/ng_RangerAppMessages.clj +0 -15
  189. package/compiler/ng_RangerAppOperatorDesc.clj +0 -20
  190. package/compiler/ng_RangerAppParamDesc.clj +0 -388
  191. package/compiler/ng_RangerAppWriterContext.clj +0 -1793
  192. package/compiler/ng_RangerArgMatch.clj +0 -638
  193. package/compiler/ng_RangerCSharpClassWriter.clj +0 -484
  194. package/compiler/ng_RangerCppClassWriter.clj +0 -1023
  195. package/compiler/ng_RangerDocGenerator.clj +0 -305
  196. package/compiler/ng_RangerFlowParser.clj +0 -4992
  197. package/compiler/ng_RangerFlowParserOrig.clj +0 -4002
  198. package/compiler/ng_RangerGenericClassWriter.clj +0 -573
  199. package/compiler/ng_RangerGolangClassWriter.clj +0 -1766
  200. package/compiler/ng_RangerImmutableExtension.clj +0 -77
  201. package/compiler/ng_RangerJava7ClassWriter.clj +0 -961
  202. package/compiler/ng_RangerJavaScriptClassWriter.clj +0 -1040
  203. package/compiler/ng_RangerKotlinClassWriter.clj +0 -372
  204. package/compiler/ng_RangerLanguageWriters.clj +0 -14
  205. package/compiler/ng_RangerLispParser.clj +0 -873
  206. package/compiler/ng_RangerPHPClassWriter.clj +0 -643
  207. package/compiler/ng_RangerPlugin.clj +0 -41
  208. package/compiler/ng_RangerRangerClassWriter.clj +0 -357
  209. package/compiler/ng_RangerRustClassWriter.clj +0 -420
  210. package/compiler/ng_RangerScalaClassWriter.clj +0 -818
  211. package/compiler/ng_RangerSerializeClass.clj +0 -502
  212. package/compiler/ng_RangerServiceBuilder.clj +0 -63
  213. package/compiler/ng_RangerSwift3ClassWriter.clj +0 -809
  214. package/compiler/ng_RangerSwiftClassWriter.clj +0 -0
  215. package/compiler/ng_RangerTypeClass.clj +0 -45
  216. package/compiler/ng_SourceParser.clj +0 -241
  217. package/compiler/ng_SourceParser2.clj +0 -214
  218. package/compiler/ng_WebPageWriter.clj +0 -39
  219. package/compiler/ng_jsonParser.clj +0 -340
  220. package/compiler/ng_p_test.clj +0 -1711
  221. package/compiler/ng_parser.clj +0 -911
  222. package/compiler/ng_parser2.clj +0 -735
  223. package/compiler/ng_parser2_backup.clj +0 -1679
  224. package/compiler/ng_parser_backup.clj +0 -886
  225. package/compiler/ng_parser_ok.clj +0 -1718
  226. package/compiler/ng_parser_ok2.clj +0 -1717
  227. package/compiler/ng_parser_std_match.clj +0 -687
  228. package/compiler/ng_parser_std_match2.clj +0 -1012
  229. package/compiler/ng_parser_v2.clj +0 -1251
  230. package/compiler/ng_ui.clj +0 -403
  231. package/compiler/ng_ui_test.clj +0 -18
  232. package/compiler/ng_writer.clj +0 -338
  233. package/compiler/ng_xmlParser.clj +0 -472
  234. package/compiler/ng_xmlParser2.clj +0 -317
  235. package/compiler/ng_xmlParser3.clj +0 -251
  236. package/compiler/opdoc.bat +0 -4
  237. package/compiler/operators.md +0 -290
  238. package/compiler/p.bat +0 -4
  239. package/compiler/package.json +0 -10
  240. package/compiler/pcmd.bat +0 -4
  241. package/compiler/pcmd2.bat +0 -3
  242. package/compiler/plaintext_plugin.clj +0 -69
  243. package/compiler/plugin.bat +0 -19
  244. package/compiler/plugin2.bat +0 -4
  245. package/compiler/plugin_app.bat +0 -3
  246. package/compiler/plugin_apps.clj +0 -27
  247. package/compiler/plugins.bat +0 -10
  248. package/compiler/reveal_plugin.clj +0 -409
  249. package/compiler/simplePlugin.clj +0 -780
  250. package/compiler/t.bat +0 -3
  251. package/compiler/test_any.clj +0 -43
  252. package/compiler/test_call.clj +0 -141
  253. package/compiler/test_chain.clj +0 -79
  254. package/compiler/test_json.clj +0 -10
  255. package/compiler/test_lambda.clj +0 -153
  256. package/compiler/test_pcmd.clj +0 -32
  257. package/compiler/test_pcmd2.clj +0 -29
  258. package/compiler/test_plugin.clj +0 -237
  259. package/compiler/test_readfile.clj +0 -13
  260. package/compiler/test_reveal.clj +0 -19
  261. package/compiler/test_slides.clj +0 -312
  262. package/compiler/test_types.clj +0 -143
  263. package/compiler/test_types2.clj +0 -49
  264. package/compiler/test_types3.clj +0 -53
  265. package/compiler/test_var.clj +0 -40
  266. package/compiler/tonpm.bat +0 -14
  267. package/compiler/tonpm2.bat +0 -12
  268. package/compiler/ui_plugin.clj +0 -507
  269. package/compiler/ui_plugin2.clj +0 -427
  270. package/compiler/update-git.bat +0 -3
  271. package/compiler/vcomp.bat +0 -4
  272. package/compiler/viewbuilder_Android.clj +0 -176
  273. package/compiler/viewbuilder_Web.clj +0 -105
  274. package/dist/bin/api.js +0 -32422
  275. package/dist/bin/compiler.d.ts +0 -1638
  276. package/dist/bin/compiler.js +0 -32444
  277. package/examples/3D/bin/test_3d.js +0 -329
  278. package/examples/3D/test_3d.clj +0 -385
  279. package/examples/EVGColor/EVGColor.clj +0 -310
  280. package/examples/EVGColor/EVGColorContext.clj +0 -176
  281. package/examples/EVGColor/bin/EVGColor.js +0 -286
  282. package/examples/EVGColor/bin/minimized.js +0 -286
  283. package/examples/SVGPath/SVGPath.clj +0 -625
  284. package/examples/SVGPath/Vec2.clj +0 -103
  285. package/examples/SVGPath/bin/SVGPath.cpp +0 -887
  286. package/examples/SVGPath/bin/SVGPath.js +0 -682
  287. package/examples/SVGPath/bin/SVGPath.ts +0 -711
  288. package/examples/SVGPath/bin/minimized.js +0 -578
  289. package/examples/SVGPath/bin/variant.hpp +0 -2416
  290. package/examples/minification/Vec2.clj +0 -103
  291. package/examples/minification/bin/minified.js +0 -44
  292. package/examples/minification/bin/test.js +0 -117
  293. package/examples/minification/test.clj +0 -13
  294. package/fiddle/VirtualCompiler.js +0 -23495
  295. package/fiddle/browser_editor.js +0 -13240
  296. package/fiddle/compileEnv.js +0 -1
  297. package/fiddle/compileEnv.json +0 -1
  298. package/fiddle/lang_data.js +0 -1
  299. package/index.html +0 -18
  300. package/native/httpd/HttpTester.clj +0 -33
  301. package/native/httpd/RangerWebService.clj +0 -81
  302. package/operators.md +0 -290
  303. package/tsconfig.json +0 -29
  304. package/versions/cpp/compiler.cpp +0 -15032
  305. package/versions/es6/compiler.js +0 -12860
  306. package/versions/go/compiler.go +0 -21338
  307. package/versions/java/AfterCodeNode.java +0 -4
  308. package/versions/java/ClassJoinPoint.java +0 -6
  309. package/versions/java/CodeFile.java +0 -42
  310. package/versions/java/CodeFileSystem.java +0 -72
  311. package/versions/java/CodeNode.java +0 -807
  312. package/versions/java/CodeSlice.java +0 -13
  313. package/versions/java/CodeWriter.java +0 -185
  314. package/versions/java/ColorConsole.java +0 -8
  315. package/versions/java/CompilerInterface.java +0 -213
  316. package/versions/java/DictNode.java +0 -353
  317. package/versions/java/LiveCompiler.java +0 -772
  318. package/versions/java/NodeEvalState.java +0 -24
  319. package/versions/java/OpFindResult.java +0 -6
  320. package/versions/java/RangerAppArrayValue.java +0 -7
  321. package/versions/java/RangerAppClassDesc.java +0 -217
  322. package/versions/java/RangerAppEnum.java +0 -14
  323. package/versions/java/RangerAppFunctionDesc.java +0 -20
  324. package/versions/java/RangerAppHashValue.java +0 -11
  325. package/versions/java/RangerAppInterfaceImpl.java +0 -6
  326. package/versions/java/RangerAppMethodVariants.java +0 -6
  327. package/versions/java/RangerAppParamDesc.java +0 -321
  328. package/versions/java/RangerAppTodo.java +0 -6
  329. package/versions/java/RangerAppValue.java +0 -10
  330. package/versions/java/RangerAppWriterContext.java +0 -800
  331. package/versions/java/RangerArgMatch.java +0 -317
  332. package/versions/java/RangerBackReference.java +0 -7
  333. package/versions/java/RangerCSharpClassWriter.java +0 -287
  334. package/versions/java/RangerCompilerMessage.java +0 -9
  335. package/versions/java/RangerCppClassWriter.java +0 -725
  336. package/versions/java/RangerFlowParser.java +0 -2142
  337. package/versions/java/RangerGenericClassWriter.java +0 -367
  338. package/versions/java/RangerGolangClassWriter.java +0 -1379
  339. package/versions/java/RangerJava7ClassWriter.java +0 -652
  340. package/versions/java/RangerJavaScriptClassWriter.java +0 -305
  341. package/versions/java/RangerKotlinClassWriter.java +0 -380
  342. package/versions/java/RangerLispParser.java +0 -845
  343. package/versions/java/RangerNodeValue.java +0 -9
  344. package/versions/java/RangerPHPClassWriter.java +0 -527
  345. package/versions/java/RangerParamEventHandler.java +0 -6
  346. package/versions/java/RangerParamEventList.java +0 -5
  347. package/versions/java/RangerParamEventMap.java +0 -27
  348. package/versions/java/RangerRangerClassWriter.java +0 -268
  349. package/versions/java/RangerRefForce.java +0 -7
  350. package/versions/java/RangerScalaClassWriter.java +0 -365
  351. package/versions/java/RangerSerializeClass.java +0 -148
  352. package/versions/java/RangerSwift3ClassWriter.java +0 -548
  353. package/versions/java/RangerTypeClass.java +0 -17
  354. package/versions/java/SourceCode.java +0 -65
  355. package/versions/php/compiler.php +0 -13830
  356. package/versions/swift3/compiler.swift +0 -12542
  357. /package/{lib/ACEEditor.clj → dist/lib/ACEEditor.rgr} +0 -0
  358. /package/{lib/SQL.clj → dist/lib/SQL.rgr} +0 -0
  359. /package/{lib/ServiceLib.clj → dist/lib/ServiceLib.rgr} +0 -0
  360. /package/{lib/Time.clj → dist/lib/Time.rgr} +0 -0
  361. /package/{lib/TypedArrays.clj → dist/lib/TypedArrays.rgr} +0 -0
  362. /package/{lib/WebLib.clj → dist/lib/WebLib.rgr} +0 -0
  363. /package/{lib/WebServerLib.clj → dist/lib/WebServerLib.rgr} +0 -0
@@ -0,0 +1,838 @@
1
+
2
+ Import "JSON.rgr"
3
+ Import "Timers.rgr"
4
+ ; Import "immutableVector.rgr"
5
+
6
+ systemunion ProcessTypeUnion ( JinxProcess )
7
+
8
+ Enum processType ( Process Attribute Block Exithandler )
9
+
10
+ operators {
11
+ http_get _:void ( path:string port:int cb:(_:void (data:string) )) {
12
+ templates {
13
+ es6 (
14
+ "require('http').get({ host : " (e 1) ", path: " (e 2) ", port:" (e 3) "}, (response) => {" nl I
15
+ "var body='';" nl
16
+ "response.on('data', (d) => { body += d });" nl
17
+ "response.on('end', () => { (" (e 4)")(body) }) " nl
18
+ i
19
+ "})" nl i
20
+ )
21
+
22
+ }
23
+ }
24
+ }
25
+
26
+ operator type:string es6 {
27
+ fn http_get:void ( path:string port:int cb:(_:void (data:string) )) (
28
+ "require('http').get({ host : " (e 1) ", path: " (e 2) ", port:" (e 3) "}, (response) => {" nl I
29
+ "var body='';" nl
30
+ "response.on('data', (d) => { body += d });" nl
31
+ "response.on('end', () => { (" (e 4)")(body) }) " nl
32
+ i
33
+ "})" nl i
34
+ )
35
+ fn https_get:void ( path:string cb:(_:void (data:string) )) (
36
+ "require('https').get({ host : " (e 1) ", path: " (e 2) "}, (response) => {" nl I
37
+ "var body='';" nl
38
+ "response.on('data', (d) => { body += d });" nl
39
+ "response.on('end', () => { (" (e 3)")(body) }) " nl
40
+ i
41
+ "})" nl i
42
+ )
43
+ }
44
+
45
+ operator type:string all {
46
+ fn createProcess:JinxProcess () {
47
+ def p (new JinxProcess)
48
+ p.name = self
49
+ return p
50
+ }
51
+ fn process:JinxProcess ( ) {
52
+ def p (new JinxProcess)
53
+ p.name = self
54
+ return p
55
+ }
56
+ ; (process (task ))
57
+ ; (task ...)
58
+ ; (process ...)
59
+ ; (process ...)
60
+
61
+ }
62
+
63
+ operator type:JinxProcess all {
64
+ fn add@(weak):JinxProcess ( task@(strong):JinxProcess ) {
65
+ push self.children task
66
+ return self
67
+ }
68
+ fn wait@(weak):JinxProcess ( ms:int ) {
69
+ def t (new JinxWaitTask)
70
+ t.ms = ms
71
+ push self.children t
72
+ return self
73
+ }
74
+ fn func@(weak):JinxProcess ( cb@(strong):(_:JinxProcessCtx (ctx:JinxProcessCtx))) {
75
+ def t (new JinxFuncCallBack)
76
+ t.callback = cb
77
+ push self.children t
78
+ return self
79
+ }
80
+ fn call@(weak):JinxProcess ( cb@(strong):(_:void (ctx:JinxProcessCtx))) {
81
+ def t (new JinxCallBack)
82
+ t.callback = cb
83
+ push self.children t
84
+ return self
85
+ }
86
+ fn async@(weak):JinxProcess ( cb@(strong):(_:void (process:JinxProcess ctx:JinxProcessCtx))) {
87
+ def t (new JinxAsyncCallBack)
88
+ t.callback = cb
89
+ push self.children t
90
+ return self
91
+ }
92
+ fn fetch@(weak):JinxProcess ( server:string path:string port:int cb@(strong):(_:JinxProcessCtx (res:JSONDataObject ctx:JinxProcessCtx))) {
93
+ def t (new JinxAjaxHttpFetchTask)
94
+ t.callback = cb
95
+ t.server = server
96
+ t.path = path
97
+ t.port = port
98
+ push self.children t
99
+ return self
100
+ }
101
+ }
102
+
103
+
104
+
105
+ ;operators {
106
+ ; process _:JinxProcess (name:string) {
107
+ ; templates {
108
+ ; * @macro(true) ("( json_obj " nl I ( repeat 1 ( (block 1) ) ) i nl ")")
109
+ ; }
110
+ ; }
111
+ ; attr cmdvdomEL:vdomAttr ( name:string value:string ) {
112
+ ; templates {
113
+ ; * @macro(true) ("vdom.newAttr(" (e 1) " " (e 2) ")")
114
+ ; }
115
+ ; }
116
+ ;}
117
+
118
+
119
+ class JinxCtxEventHandler {
120
+ def callback@(weak):(_:void ( ctx:JinxProcessCtx ))
121
+ fn fire(ctx:JinxProcessCtx) {
122
+ def cb:(_:void ( ctx:JinxProcessCtx )) (unwrap callback)
123
+ if(!null? callback) {
124
+ cb(ctx)
125
+ }
126
+ }
127
+ }
128
+
129
+ class JinxEventHandlerCollection@(immutable) {
130
+ def list:Vector@(JinxCtxEventHandler) (new Vector@(JinxCtxEventHandler))
131
+ fn add:JinxEventHandlerCollection (handler@(strong):JinxCtxEventHandler) {
132
+ list = (push list handler)
133
+ return this
134
+ }
135
+ fn fire (ctx:JinxProcessCtx) {
136
+ list.forEach({
137
+ item.fire(ctx)
138
+ })
139
+ }
140
+ }
141
+ ; tasks can have the context information and use it to signal things
142
+ class JinxProcessCtx@(immutable) {
143
+
144
+ def allKeys:Map@(string boolean) (new Map@(string boolean))
145
+ def strValues:Map@(string string) (new Map@(string string))
146
+ def intValues:Map@(string int) (new Map@(string int))
147
+ ; def dictValues:Map@(string JSONDataObject) (new Map@(string JSONDataObject))
148
+ def subCtxs:Map@(string JinxProcessCtx) (new Map@(string JinxProcessCtx))
149
+ def handlers:Map@(string JinxEventHandlerCollection) (new Map@(string JinxEventHandlerCollection))
150
+ def anyValues:Map@(string Any) (new Map@(string Any))
151
+
152
+ fn fire (name:string) {
153
+ if( has handlers name ) {
154
+ def h (get handlers name)
155
+ h.fire(this)
156
+ }
157
+ }
158
+ fn onValue:JinxProcessCtx (name:string cb@(strong lives):(_:void (ctx:JinxProcessCtx))) {
159
+ def result this
160
+ def hdlrs:JinxEventHandlerCollection
161
+ if( false == (has result.handlers name)) {
162
+ def h (new JinxCtxEventHandler)
163
+ h.callback = cb
164
+ def newHandler@(temp) (new JinxEventHandlerCollection)
165
+ newHandler.list = (push newHandler.list h)
166
+ result = (result.set_handlers( (set result.handlers name newHandler) ))
167
+ } {
168
+ def h (new JinxCtxEventHandler)
169
+ h.callback = cb
170
+ def coll (unwrap ( get handlers name ))
171
+ coll.list = (push coll.list h)
172
+ result = (result.set_handlers( (set result.handlers name coll) ))
173
+ }
174
+ return result
175
+ }
176
+
177
+ }
178
+
179
+
180
+ operator type:JinxProcessCtx all {
181
+ fn has:boolean (name:string) {
182
+ return (has self.allKeys name)
183
+ }
184
+ fn keys:[string] () {
185
+ return (keys self.allKeys)
186
+ }
187
+ fn set:JinxProcessCtx (name:string value:JinxProcessCtx) {
188
+ def c ( self.set_subCtxs( (set self.subCtxs name value) ) )
189
+ c = (c.set_allKeys( (set self.allKeys name true)) )
190
+ c.fire(name)
191
+ return c
192
+ }
193
+ fn getCtx@(optional):JinxProcessCtx (name:string ) {
194
+ return ( get self.subCtxs name )
195
+ }
196
+ fn set:JinxProcessCtx (name:string value:string) {
197
+ def c ( self.set_strValues( (set self.strValues name value) ) )
198
+ c = (c.set_allKeys( (set self.allKeys name true)) )
199
+ c.fire(name)
200
+ return c
201
+ }
202
+ fn getStr@(optional):string (name:string ) {
203
+ return ( get self.strValues name )
204
+ }
205
+ fn getString@(optional):string (name:string ) {
206
+ return ( get self.strValues name )
207
+ }
208
+ fn set:JinxProcessCtx (name:string value:int) {
209
+ def c ( self.set_intValues( (set self.intValues name value) ) )
210
+ c = (c.set_allKeys( (set self.allKeys name true)) )
211
+ c.fire(name)
212
+ return c
213
+ }
214
+ fn getInt@(optional):int (name:string ) {
215
+ return ( get self.intValues name )
216
+ }
217
+ fn set:JinxProcessCtx (name:string value:JSONDataObject) {
218
+ def c ( self.set_dictValues( (set self.dictValues name value) ) )
219
+ c = (c.set_allKeys( (set self.allKeys name true)) )
220
+ c.fire(name)
221
+ return c
222
+ }
223
+ fn getDict@(optional):JSONDataObject (name:string ) {
224
+ return ( get self.dictValues name )
225
+ }
226
+
227
+ }
228
+
229
+
230
+ trait task {
231
+ fn isProcess:boolean () {
232
+ return false
233
+ }
234
+ fn isTask:boolean () {
235
+ return true
236
+ }
237
+ }
238
+
239
+ class JinxProcess {
240
+
241
+ def pType:processType processType.Process
242
+ def attrs:[string:string]
243
+
244
+ def is_cleaned false
245
+ def is_running:boolean false
246
+ def is_background false
247
+ def is_aborted false
248
+ def is_loop false
249
+ def is_exithandler false
250
+ def is_exit_run false
251
+ def is_persistent false
252
+ def index -1
253
+ def buffer_index 0
254
+ def name ""
255
+
256
+ ; different process types on this process...
257
+ def backgroundProcesses@(weak):[JinxProcess]
258
+ def errorHandlers:[JinxProcess]
259
+ def exitHandlers:[JinxProcess]
260
+
261
+ def children:[JinxProcess]
262
+ def parent@(weak):JinxProcess
263
+ def myCtx@(weak):JinxProcessCtx
264
+ ; if returns true exits immediately
265
+
266
+ fn getName:string() {
267
+ return ""
268
+ }
269
+ fn getValue:string() {
270
+ return ""
271
+ }
272
+
273
+ ; --> dispatch change to the processes running things...
274
+ ; fn sendChange( method:(_:JinxProcessCtx (previous:JinxProcessCtx))) {
275
+ ; if(!null? myCtx) {
276
+ ; myCtx = (method( (unwrap myCtx)))
277
+ ; }
278
+ ; if(!null? parent) {
279
+ ; parent.sendChange(method)
280
+ ; }
281
+ ; }
282
+
283
+ ; --------- error handler -------
284
+ fn generateError ( ctx:JinxProcessCtx ) {
285
+ if( ( array_length errorHandlers) > 0 ) {
286
+ this.abort(ctx)
287
+ for errorHandlers pc:JinxProcess i {
288
+ pc.start( ctx )
289
+ }
290
+ } {
291
+ this.abort(ctx)
292
+ if(!null? parent) {
293
+ parent.generateError(ctx)
294
+ }
295
+ }
296
+ }
297
+
298
+ fn isProcess:boolean () {
299
+ return true
300
+ }
301
+
302
+ fn isTask:boolean () {
303
+ return false
304
+ }
305
+
306
+ fn isGenerator:boolean () {
307
+ return false
308
+ }
309
+
310
+ fn generate:JinxProcess ( ctx:JinxProcessCtx ) {
311
+ return (new JinxProcess)
312
+ }
313
+
314
+ fn isBackgroundProcess:boolean () {
315
+ return is_background
316
+ }
317
+
318
+ ; funtion to override
319
+ fn cleanup() {
320
+
321
+ }
322
+
323
+ fn cancelTask () {
324
+ }
325
+
326
+ fn start (ctx:JinxProcessCtx) {
327
+ if(is_running) {
328
+ if( index < buffer_index) {
329
+ this.abort(ctx)
330
+ } {
331
+ return
332
+ }
333
+ }
334
+ myCtx = ctx
335
+ is_running = true
336
+ is_aborted = false
337
+ for children ch:JinxProcess i {
338
+ if(ch.is_exithandler) {
339
+ ch.is_exit_run = false
340
+ }
341
+ }
342
+ this.step(ctx)
343
+ }
344
+ fn done:void (ctx:JinxProcessCtx) {
345
+ def findLast:JinxProcess (this)
346
+ while( (!null? findLast.parent) ) {
347
+ if(findLast.is_persistent) {
348
+ break
349
+ }
350
+ findLast = (unwrap findLast.parent)
351
+ }
352
+ findLast.returnSuccess(ctx)
353
+ }
354
+ fn run:boolean (ctx:JinxProcessCtx execParent:JinxProcess) {
355
+ parent = execParent
356
+ this.start( ctx )
357
+ return false
358
+ }
359
+ fn runTask:boolean (ctx:JinxProcessCtx execParent:JinxProcess) {
360
+ if( is_exithandler ) {
361
+ return true
362
+ }
363
+ parent = execParent
364
+ if(this.isProcess()) {
365
+ this.start( ctx )
366
+ return false
367
+ }
368
+ if(is_running) {
369
+ return false
370
+ }
371
+ myCtx = ctx
372
+ is_running = true
373
+ is_aborted = false
374
+ def is_done ( this.run( ctx execParent ) )
375
+ if( is_done ) {
376
+ is_running = false
377
+ is_aborted = false
378
+ }
379
+ return is_done
380
+ }
381
+ fn returnSuccess (ctx:JinxProcessCtx) {
382
+ if(is_running == false || is_aborted) {
383
+ return
384
+ }
385
+ this.endStep(ctx)
386
+ if(!null? parent) {
387
+ def p (unwrap parent)
388
+ p.step(ctx)
389
+ }
390
+ }
391
+ fn canRun:boolean () {
392
+ if(null? parent) {
393
+ return false
394
+ }
395
+ def p (unwrap parent)
396
+ if( p.index >= 0) {
397
+ def activeTask (itemAt p.children p.index)
398
+ if( this == activeTask ) {
399
+ return true
400
+ }
401
+ }
402
+ return false
403
+ }
404
+
405
+ fn spawnBackground ( ctx:JinxProcessCtx p:JinxProcess ) {
406
+ if( (p.isProcess()) && is_running ) {
407
+ p.is_background = true
408
+ print ">>> background process is starting"
409
+ p.parent = this
410
+ push backgroundProcesses p
411
+ p.start(ctx)
412
+ return
413
+ }
414
+ }
415
+
416
+ ; process is immutable and context contains the parameters which the process tasks need for the
417
+ ; actual processing...
418
+ fn step(ctx:JinxProcessCtx) {
419
+ if ( is_aborted || (is_running == false ) ) {
420
+ return
421
+ }
422
+ if( index >= (array_length children) ) {
423
+ print "*** TASK ERROR ***"
424
+ is_aborted = true
425
+ is_running = false
426
+ return
427
+ }
428
+ if (index >= 0) {
429
+ def activeTask (itemAt children index)
430
+ if(activeTask.is_running && (activeTask.is_background == false)) {
431
+ print "--- active task was running... sorry"
432
+ return
433
+ }
434
+ }
435
+ index = index + 1
436
+ if( index >= (array_length children) ) {
437
+ ; print "--> should exit the process " + name
438
+ if is_loop {
439
+ index = -1
440
+ this.step((unwrap myCtx))
441
+ return
442
+ }
443
+ if(is_persistent) {
444
+ ; do not exit persistent process until it has specific exit command...
445
+ return
446
+ }
447
+ this.returnSuccess(ctx)
448
+ return
449
+ }
450
+ def p@(lives) (itemAt children index)
451
+
452
+ ; the generator task or process
453
+ if(p.isGenerator()) {
454
+ p = p.generate(ctx)
455
+ }
456
+ p.parent = this
457
+ if( (p.isProcess()) && (p.isBackgroundProcess()) ) {
458
+ push backgroundProcesses p
459
+ p.runTask( ctx this)
460
+ this.step(ctx)
461
+ return
462
+ }
463
+ ; if run return "true" continue immediately
464
+ if( p.runTask( ctx this) ) {
465
+ this.step(ctx)
466
+ }
467
+ }
468
+ fn callExitHandlers(ctx:JinxProcessCtx) {
469
+ for children ch:JinxProcess i {
470
+ if(ch.is_exithandler && (false == ch.is_exit_run)) {
471
+ ch.is_exit_run = true
472
+ ch.start(ctx)
473
+ }
474
+ }
475
+ }
476
+ fn cancel(ctx:JinxProcessCtx) {
477
+ is_aborted = true
478
+ if is_running {
479
+ this.end(ctx)
480
+ is_aborted = true
481
+ for children ch:JinxProcess i {
482
+ ch.cancel(ctx)
483
+ ; cleanup the task event handlers
484
+ if(ch.isTask()) {
485
+ ch.doTaskCleanup()
486
+ ch.cancelTask()
487
+ ch.is_running = false
488
+ ch.is_aborted = true
489
+ } {
490
+ is_running = false
491
+ }
492
+ this.callExitHandlers(ctx)
493
+ }
494
+ for backgroundProcesses bProcess:JinxProcess i {
495
+ bProcess.cancel(ctx)
496
+ }
497
+ is_running = false
498
+ } {
499
+ print "stopped, clearing bg processes..."
500
+ for backgroundProcesses bProcess:JinxProcess i {
501
+ bProcess.cancel(ctx)
502
+ }
503
+ }
504
+ }
505
+ fn doTaskCleanup() {
506
+ if( (this.isTask()) && (is_cleaned == false ) ) {
507
+ is_cleaned = true
508
+ this.cleanup()
509
+ }
510
+ }
511
+
512
+ ; after a step ends run this...
513
+ fn endStep(ctx:JinxProcessCtx) {
514
+ if(is_running == false) {
515
+ return
516
+ }
517
+ is_running = false
518
+ index = -1
519
+ for backgroundProcesses bProcess:JinxProcess i {
520
+ bProcess.cancel(ctx)
521
+ }
522
+ for children ch:JinxProcess i {
523
+ ch.end(ctx)
524
+ this.callExitHandlers(ctx)
525
+ }
526
+ clear backgroundProcesses
527
+ }
528
+
529
+ fn end(ctx:JinxProcessCtx) {
530
+ if(is_running == false) {
531
+ this.doTaskCleanup()
532
+ return
533
+ }
534
+ is_running = false
535
+ index = -1
536
+
537
+ this.doTaskCleanup()
538
+
539
+ ; shutdown the background processing
540
+ for backgroundProcesses bProcess:JinxProcess i {
541
+ bProcess.cancel(ctx)
542
+ }
543
+ ; cleaning up the child processes...
544
+ for children ch:JinxProcess i {
545
+ ch.end(ctx)
546
+ }
547
+ this.callExitHandlers(ctx)
548
+ clear backgroundProcesses
549
+ }
550
+ fn abort(ctx:JinxProcessCtx) {
551
+ if(is_running) {
552
+ this.cancel(ctx)
553
+ }
554
+ }
555
+
556
+ fn addItem (pItem:JinxProcess) {
557
+ switch pItem.pType {
558
+ case processType.Attribute {
559
+ if( (pItem.getName()) == "background") {
560
+ this.is_background = true
561
+ }
562
+ if( (pItem.getName()) == "loop") {
563
+ this.is_loop = true
564
+ }
565
+ if( (pItem.getName()) == "exit") {
566
+ this.is_exithandler = true
567
+ }
568
+ if( (pItem.getName()) == "persistent") {
569
+ this.is_persistent = true
570
+ }
571
+ }
572
+ case processType.Process {
573
+ this.add(pItem)
574
+ }
575
+ case processType.Block {
576
+ pItem.children.forEach({
577
+ this.add(item)
578
+ })
579
+ ; this.add(pItem)
580
+ }
581
+ default {
582
+
583
+ }
584
+ }
585
+ }
586
+
587
+ sfn p1:JinxProcess (name:string) {
588
+ def p (new JinxProcess)
589
+ p.name = name
590
+ return p
591
+ }
592
+
593
+ sfn p2:JinxProcess (name:string childP:JinxProcess) {
594
+ def p (new JinxProcess)
595
+ p.name = name
596
+ p.addItem( childP )
597
+ return p
598
+ }
599
+
600
+ sfn fromList:JinxProcess (list:[JinxProcess]) {
601
+ def p (new JinxProcess)
602
+ for list task:JinxProcess i {
603
+ p.addItem( task )
604
+ }
605
+ return p
606
+ }
607
+ sfn fromList2:JinxProcess (name:string list:[JinxProcess]) {
608
+ def p (new JinxProcess)
609
+ p.name = name
610
+ for list task:JinxProcess i {
611
+ p.addItem( task )
612
+ }
613
+ return p
614
+ }
615
+ }
616
+
617
+ ; fetch data from "somewhere"
618
+
619
+ ; fn fetch:JSONDataObject (url:string)
620
+ ; -> just set the value to "__R"
621
+ ; -> then read the "__R"
622
+ ; -> if many calls just pick the __R from several calls when they arrive
623
+ ; callsomeFn( (fetch url1) (fetch url2))
624
+ ; -> task should have it's own context set
625
+ ; -> you can then read the return values
626
+
627
+
628
+ ; fn wait (amount:double)
629
+ class JinxWaitTask {
630
+ def ms 0
631
+ def waitTimeout:TimeOutID
632
+ Extends (JinxProcess)
633
+ does task
634
+ fn cancelTask () {
635
+ if(!null? this.waitTimeout) {
636
+ clearTimeout (unwrap this.waitTimeout)
637
+ }
638
+ }
639
+ fn run:boolean (ctx:JinxProcessCtx execParent:JinxProcess) {
640
+ def timeout (setTimeout ms {
641
+ if( is_aborted == false) {
642
+ this.returnSuccess( ctx )
643
+ }
644
+ })
645
+ this.waitTimeout = timeout
646
+ return false
647
+ }
648
+ }
649
+
650
+ ; TODO: callback as member variable does not work currently....
651
+ class JinxGeneratorTask {
652
+ def callback:(_:JinxProcess (ctx:JinxProcessCtx ))
653
+ does task
654
+ Extends (JinxProcess)
655
+ fn generate:JinxProcess (ctx:JinxProcessCtx) {
656
+ def cbFn (unwrap callback)
657
+ return ( cbFn( ctx ) )
658
+ }
659
+ fn isGenerator:boolean () {
660
+ return true
661
+ }
662
+ fn run:boolean (ctx:JinxProcessCtx execParent:JinxProcess) {
663
+ return true
664
+ }
665
+ }
666
+
667
+ class JinxFuncCallBack {
668
+ def callback:(_:JinxProcessCtx (ctx:JinxProcessCtx))
669
+ does task
670
+ Extends (JinxProcess)
671
+ fn run:boolean (ctx:JinxProcessCtx execParent:JinxProcess) {
672
+ def cb (unwrap callback)
673
+ def nextCtx (cb(ctx))
674
+ this.returnSuccess( nextCtx )
675
+ return false
676
+ }
677
+ }
678
+ class JinxCallBack {
679
+ def callback:(_:void (ctx:JinxProcessCtx process:JinxProcess))
680
+ does task
681
+ Extends (JinxProcess)
682
+ fn run:boolean (ctx:JinxProcessCtx execParent:JinxProcess) {
683
+ def cb (unwrap callback)
684
+ cb(ctx execParent)
685
+ return true
686
+ }
687
+ }
688
+
689
+ class JinxAsyncCallBack {
690
+ def callback:(_:void ( process:JinxAsyncCallBack ctx:JinxProcessCtx ))
691
+ does task
692
+ Extends (JinxProcess)
693
+ fn run:boolean (ctx:JinxProcessCtx execParent:JinxProcess) {
694
+ print "callback is called "
695
+ def cb (unwrap callback)
696
+ cb(this ctx)
697
+ return false
698
+ }
699
+ }
700
+
701
+
702
+ class processAttr {
703
+ Extends (JinxProcess)
704
+ def name ""
705
+ def value ""
706
+ fn getName:string () {
707
+ return name
708
+ }
709
+ fn getValue:string () {
710
+ return value
711
+ }
712
+ }
713
+
714
+ class JinxProcessBlock {
715
+
716
+ Extends (JinxProcess)
717
+ ; def items@(weak):[JinxProcess]
718
+
719
+ static fn fromList:JinxProcess ( list:[JinxProcess]) {
720
+ def o (new JinxProcessBlock)
721
+ o.pType = processType.Block
722
+ def list2@(lives temp) list
723
+ o.children = list2
724
+ return o
725
+ }
726
+ }
727
+
728
+
729
+ operators {
730
+ process _:JinxProcess ( n:string ) {
731
+ templates {
732
+ * @macro(true) ("JinxProcess.p1(" (e 1) ")")
733
+ }
734
+ }
735
+ process _:JinxProcess ( n:string v:vdom ) {
736
+ templates {
737
+ * @macro(true) ("JinxProcess.p2(" (e 1) " " (e 2) ")")
738
+ }
739
+ }
740
+ process _@(expands):JinxProcess ( v:JinxProcess el2:JinxProcess ) {
741
+ templates {
742
+ * @macro(true) ("(JinxProcess.fromList( ([] _:JinxProcess (" nl I
743
+ ( repeat 1 ( nl (e 1) nl ) ) i nl
744
+ "))))")
745
+ }
746
+ }
747
+ process _@(expands):JinxProcess ( n:string el2:JinxProcess ) {
748
+ templates {
749
+ * @macro(true) ("(JinxProcess.fromList2( " (e 1) " ([] _:JinxProcess (" nl I
750
+ ( repeat 2 ( nl (e 1) nl ) ) i nl
751
+ "))))")
752
+ }
753
+ }
754
+ process.block _@(expands):JinxProcess ( el2:[JinxProcess] ) {
755
+ templates {
756
+ * @macro(true) ("(JinxProcessBlock.fromList( " (e 1) " ))")
757
+ }
758
+ }
759
+ process.block _@(expands):JinxProcess ( el2:JinxProcess ) {
760
+ templates {
761
+ * @macro(true) ("(JinxProcessBlock.fromList( " (e 1) " ([] _:JinxProcess (" nl I
762
+ ( repeat 2 ( nl (e 1) nl ) ) i nl
763
+ "))))")
764
+ }
765
+ }
766
+ }
767
+ operator type:JinxProcess all {
768
+ fn getAttr:string (name:string) {
769
+
770
+ }
771
+ }
772
+ operator type:void all {
773
+ fn task.func:JinxProcess ( callback@(strong):(_:JinxProcessCtx (ctx:JinxProcessCtx)) ) {
774
+ def t (new JinxFuncCallBack)
775
+ t.callback = callback
776
+ return t
777
+ }
778
+ ; JinxGeneratorTask
779
+ fn task.generate:JinxProcess ( callback@(strong):(_:JinxProcess (ctx:JinxProcessCtx) ) ) {
780
+ def t (new JinxGeneratorTask)
781
+ t.callback = callback
782
+ return t
783
+ }
784
+ fn task.call:JinxProcess ( callback@(strong):(_:void (ctx:JinxProcessCtx process:JinxProcess)) ) {
785
+ def t (new JinxCallBack)
786
+ t.callback = callback
787
+ return t
788
+ }
789
+ fn task.callback:JinxProcess ( callback@(strong):(_:void (ctx:JinxProcessCtx)) ) {
790
+ def t (new JinxCallBack)
791
+ t.callback = callback
792
+ return t
793
+ }
794
+ }
795
+ operator type:string all {
796
+ fn process () {
797
+ def p (new JinxProcess)
798
+ p.name = self
799
+ return p
800
+ }
801
+ fn process.attr:JinxProcess (value:string) {
802
+ def pa (new processAttr)
803
+ pa.name = self
804
+ pa.value = value
805
+ pa.pType = processType.Attribute
806
+ return pa
807
+ }
808
+ fn task.func:JinxProcess ( callback@(strong):(_:JinxProcessCtx (ctx:JinxProcessCtx)) ) {
809
+ def t (new JinxFuncCallBack)
810
+ t.callback = callback
811
+ return t
812
+ }
813
+ fn task_func:JinxProcess ( callback@(strong):(_:JinxProcessCtx (ctx:JinxProcessCtx)) ) {
814
+ def t (new JinxFuncCallBack)
815
+ t.callback = callback
816
+ return t
817
+ }
818
+ fn task.callback:JinxProcess ( callback@(strong):(_:void (ctx:JinxProcessCtx)) ) {
819
+ def t (new JinxCallBack)
820
+ t.callback = callback
821
+ return t
822
+ }
823
+ fn task.fancy:JinxProcess () {
824
+ return (process
825
+ "OK task...."
826
+ (task.wait 0.4)
827
+ )
828
+ }
829
+
830
+ }
831
+
832
+ operator type:void all {
833
+ fn task.wait:JinxProcess ( ms:double ) {
834
+ def t (new JinxWaitTask)
835
+ t.ms = (to_int (1000.0 * ms ))
836
+ return t
837
+ }
838
+ }