easycoder 260320.2__tar.gz → 260322.1__tar.gz

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 (322) hide show
  1. {easycoder-260320.2 → easycoder-260322.1}/PKG-INFO +1 -1
  2. {easycoder-260320.2 → easycoder-260322.1}/easycoder/__init__.py +1 -1
  3. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_core.py +27 -10
  4. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_mqtt.py +2 -2
  5. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_program.py +6 -2
  6. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_server.py +16 -5
  7. easycoder-260320.2/lsp/.vscode/launch.json +0 -39
  8. easycoder-260320.2/lsp/.vscode/tasks.json +0 -22
  9. easycoder-260320.2/lsp/LSP_ARCHITECTURE.md +0 -430
  10. easycoder-260320.2/lsp/QUICK_START.md +0 -132
  11. easycoder-260320.2/lsp/client/out/extension.d.ts +0 -3
  12. easycoder-260320.2/lsp/client/out/extension.js +0 -106
  13. easycoder-260320.2/lsp/client/package-lock.json +0 -140
  14. easycoder-260320.2/lsp/client/package.json +0 -27
  15. easycoder-260320.2/lsp/client/src/extension.ts +0 -93
  16. easycoder-260320.2/lsp/client/tsconfig.json +0 -17
  17. easycoder-260320.2/lsp/package-lock.json +0 -51
  18. easycoder-260320.2/lsp/package.json +0 -85
  19. easycoder-260320.2/lsp/requirements.txt +0 -2
  20. easycoder-260320.2/lsp/server.py +0 -557
  21. easycoder-260320.2/lsp/syntaxes/easycoder.configuration.json +0 -22
  22. easycoder-260320.2/lsp/test_server.py +0 -332
  23. {easycoder-260320.2 → easycoder-260322.1}/.github/copilot-instructions.md +0 -0
  24. {easycoder-260320.2 → easycoder-260322.1}/.github/workflows/conformance-report.yml +0 -0
  25. {easycoder-260320.2 → easycoder-260322.1}/.gitignore +0 -0
  26. {easycoder-260320.2 → easycoder-260322.1}/.vscode/EXTENSION_GUIDE.md +0 -0
  27. {easycoder-260320.2 → easycoder-260322.1}/.vscode/PYTHON_SETUP.md +0 -0
  28. {easycoder-260320.2 → easycoder-260322.1}/.vscode/easycoder/README.md +0 -0
  29. {easycoder-260320.2 → easycoder-260322.1}/.vscode/easycoder/language-configuration.json +0 -0
  30. {easycoder-260320.2 → easycoder-260322.1}/.vscode/easycoder/package.json +0 -0
  31. {easycoder-260320.2 → easycoder-260322.1}/.vscode/easycoder/snippets/easycoder.json +0 -0
  32. {easycoder-260320.2 → easycoder-260322.1}/.vscode/easycoder/syntaxes/easycoder.tmLanguage.json +0 -0
  33. {easycoder-260320.2 → easycoder-260322.1}/.vscode/launch.json +0 -0
  34. {easycoder-260320.2 → easycoder-260322.1}/.vscode/settings.json +0 -0
  35. {easycoder-260320.2 → easycoder-260322.1}/AI/ARCHITECTURE.md +0 -0
  36. {easycoder-260320.2 → easycoder-260322.1}/AI/EASYCODER_AND_WEBSON.md +0 -0
  37. {easycoder-260320.2 → easycoder-260322.1}/AI/EXAMPLES.md +0 -0
  38. {easycoder-260320.2 → easycoder-260322.1}/AI/PROJECT_OVERVIEW.md +0 -0
  39. {easycoder-260320.2 → easycoder-260322.1}/AI/README.md +0 -0
  40. {easycoder-260320.2 → easycoder-260322.1}/AI/WORKING_RULES.md +0 -0
  41. {easycoder-260320.2 → easycoder-260322.1}/AI/articles/Arrays and Modules.md +0 -0
  42. {easycoder-260320.2 → easycoder-260322.1}/AI/examples/primes/primes.ecs +0 -0
  43. {easycoder-260320.2 → easycoder-260322.1}/AI/examples/primes/primes.md +0 -0
  44. {easycoder-260320.2 → easycoder-260322.1}/AI/examples/wordlist/wordlist.ecs +0 -0
  45. {easycoder-260320.2 → easycoder-260322.1}/AI/examples/wordlist/wordlist.md +0 -0
  46. {easycoder-260320.2 → easycoder-260322.1}/AI/log/CONTRIBUTING.md +0 -0
  47. {easycoder-260320.2 → easycoder-260322.1}/AI/log/DEVELOPER_RESOURCES.md +0 -0
  48. {easycoder-260320.2 → easycoder-260322.1}/AI/log/GRAPHICS_PHASE1.md +0 -0
  49. {easycoder-260320.2 → easycoder-260322.1}/AI/log/PHASE1_COMPLETION_SUMMARY.md +0 -0
  50. {easycoder-260320.2 → easycoder-260322.1}/AI/log/PHASE_1_3_COMPLETION_REPORT.md +0 -0
  51. {easycoder-260320.2 → easycoder-260322.1}/AI/log/PHASE_4_COMPLETION_REPORT.md +0 -0
  52. {easycoder-260320.2 → easycoder-260322.1}/AI/log/PLUGIN_PATTERNS.md +0 -0
  53. {easycoder-260320.2 → easycoder-260322.1}/AI/log/PROJECT_COMPLETION_SUMMARY.md +0 -0
  54. {easycoder-260320.2 → easycoder-260322.1}/AI/log/START_HERE.md +0 -0
  55. {easycoder-260320.2 → easycoder-260322.1}/AI/log/SYNTAX_REFACTORING.md +0 -0
  56. {easycoder-260320.2 → easycoder-260322.1}/LICENSE +0 -0
  57. {easycoder-260320.2 → easycoder-260322.1}/README.md +0 -0
  58. {easycoder-260320.2 → easycoder-260322.1}/RELEASE_NOTES.md +0 -0
  59. {easycoder-260320.2 → easycoder-260322.1}/backdrop.jpg +0 -0
  60. {easycoder-260320.2 → easycoder-260322.1}/basic.py +0 -0
  61. {easycoder-260320.2 → easycoder-260322.1}/conformance/README.md +0 -0
  62. {easycoder-260320.2 → easycoder-260322.1}/conformance/actuals-python-cli.json +0 -0
  63. {easycoder-260320.2 → easycoder-260322.1}/conformance/ec_py_runner.py +0 -0
  64. {easycoder-260320.2 → easycoder-260322.1}/conformance/parity-report-template.json +0 -0
  65. {easycoder-260320.2 → easycoder-260322.1}/conformance/parity-report.generated.json +0 -0
  66. {easycoder-260320.2 → easycoder-260322.1}/conformance/parity-report.initial.json +0 -0
  67. {easycoder-260320.2 → easycoder-260322.1}/conformance/plugin-interface-matrix.json +0 -0
  68. {easycoder-260320.2 → easycoder-260322.1}/conformance/run_conformance.py +0 -0
  69. {easycoder-260320.2 → easycoder-260322.1}/conformance/runner-contract.md +0 -0
  70. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0001-basic-assignment.ecs +0 -0
  71. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0001-basic-assignment.json +0 -0
  72. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0002-arithmetic-chain.ecs +0 -0
  73. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0002-arithmetic-chain.json +0 -0
  74. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0003-condition-branch.ecs +0 -0
  75. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0003-condition-branch.json +0 -0
  76. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0004-while-sum.ecs +0 -0
  77. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0004-while-sum.json +0 -0
  78. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0005-array-index-access.ecs +0 -0
  79. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0005-array-index-access.json +0 -0
  80. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0006-and-or-conditions.ecs +0 -0
  81. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0006-and-or-conditions.json +0 -0
  82. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0007-includes-membership.ecs +0 -0
  83. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/EC-0007-includes-membership.json +0 -0
  84. {easycoder-260320.2 → easycoder-260322.1}/conformance/tests/index.json +0 -0
  85. {easycoder-260320.2 → easycoder-260322.1}/doc/README.md +0 -0
  86. {easycoder-260320.2 → easycoder-260322.1}/doc/RESERVED_STEMS.md +0 -0
  87. {easycoder-260320.2 → easycoder-260322.1}/doc/core/README.md +0 -0
  88. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/boolean.md +0 -0
  89. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/empty.md +0 -0
  90. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/ends.md +0 -0
  91. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/even.md +0 -0
  92. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/exists.md +0 -0
  93. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/greater.md +0 -0
  94. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/hasProperty.md +0 -0
  95. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/includes.md +0 -0
  96. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/is.md +0 -0
  97. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/less.md +0 -0
  98. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/list.md +0 -0
  99. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/none.md +0 -0
  100. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/not.md +0 -0
  101. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/numeric.md +0 -0
  102. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/object.md +0 -0
  103. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/odd.md +0 -0
  104. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/starts.md +0 -0
  105. {easycoder-260320.2 → easycoder-260322.1}/doc/core/conditions/string.md +0 -0
  106. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/add.md +0 -0
  107. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/append.md +0 -0
  108. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/assert.md +0 -0
  109. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/begin.md +0 -0
  110. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/clear.md +0 -0
  111. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/close.md +0 -0
  112. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/create.md +0 -0
  113. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/debug.md +0 -0
  114. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/decrement.md +0 -0
  115. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/delete.md +0 -0
  116. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/divide.md +0 -0
  117. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/download.md +0 -0
  118. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/exit.md +0 -0
  119. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/file.md +0 -0
  120. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/fork.md +0 -0
  121. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/get.md +0 -0
  122. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/go.md +0 -0
  123. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/gosub.md +0 -0
  124. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/if.md +0 -0
  125. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/import.md +0 -0
  126. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/increment.md +0 -0
  127. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/index.md +0 -0
  128. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/init.md +0 -0
  129. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/input.md +0 -0
  130. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/load.md +0 -0
  131. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/lock.md +0 -0
  132. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/log.md +0 -0
  133. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/module.md +0 -0
  134. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/multiply.md +0 -0
  135. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/negate.md +0 -0
  136. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/on.md +0 -0
  137. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/open.md +0 -0
  138. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/pass.md +0 -0
  139. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/pop.md +0 -0
  140. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/post.md +0 -0
  141. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/print.md +0 -0
  142. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/push.md +0 -0
  143. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/put.md +0 -0
  144. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/read.md +0 -0
  145. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/release.md +0 -0
  146. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/replace.md +0 -0
  147. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/return.md +0 -0
  148. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/run.md +0 -0
  149. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/save.md +0 -0
  150. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/script.md +0 -0
  151. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/send.md +0 -0
  152. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/set.md +0 -0
  153. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/shuffle.md +0 -0
  154. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/split.md +0 -0
  155. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/stack.md +0 -0
  156. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/stop.md +0 -0
  157. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/system.md +0 -0
  158. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/take.md +0 -0
  159. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/toggle.md +0 -0
  160. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/trim.md +0 -0
  161. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/truncate.md +0 -0
  162. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/unlock.md +0 -0
  163. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/use.md +0 -0
  164. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/variable.md +0 -0
  165. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/wait.md +0 -0
  166. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/while.md +0 -0
  167. {easycoder-260320.2 → easycoder-260322.1}/doc/core/keywords/write.md +0 -0
  168. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/arg.md +0 -0
  169. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/args.md +0 -0
  170. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/cat.md +0 -0
  171. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/cos.md +0 -0
  172. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/datime.md +0 -0
  173. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/decode.md +0 -0
  174. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/element.md +0 -0
  175. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/elements.md +0 -0
  176. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/empty.md +0 -0
  177. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/encode.md +0 -0
  178. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/error.md +0 -0
  179. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/files.md +0 -0
  180. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/float.md +0 -0
  181. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/from.md +0 -0
  182. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/hash.md +0 -0
  183. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/index.md +0 -0
  184. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/integer.md +0 -0
  185. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/json.md +0 -0
  186. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/keys.md +0 -0
  187. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/left.md +0 -0
  188. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/length.md +0 -0
  189. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/lowercase.md +0 -0
  190. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/memory.md +0 -0
  191. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/modification.md +0 -0
  192. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/modulo.md +0 -0
  193. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/newline.md +0 -0
  194. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/now.md +0 -0
  195. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/operations.md +0 -0
  196. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/position.md +0 -0
  197. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/property.md +0 -0
  198. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/random.md +0 -0
  199. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/right.md +0 -0
  200. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/sin.md +0 -0
  201. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/stringify.md +0 -0
  202. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/tab.md +0 -0
  203. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/tan.md +0 -0
  204. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/timestamp.md +0 -0
  205. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/today.md +0 -0
  206. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/trim.md +0 -0
  207. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/type.md +0 -0
  208. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/uppercase.md +0 -0
  209. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/value.md +0 -0
  210. {easycoder-260320.2 → easycoder-260322.1}/doc/core/values/weekday.md +0 -0
  211. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/PATTERNS.md +0 -0
  212. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/README.md +0 -0
  213. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/add.md +0 -0
  214. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/attach.md +0 -0
  215. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/center.md +0 -0
  216. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/checkbox.md +0 -0
  217. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/clear.md +0 -0
  218. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/close.md +0 -0
  219. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/combobox.md +0 -0
  220. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/create.md +0 -0
  221. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/dialog.md +0 -0
  222. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/disable.md +0 -0
  223. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/enable.md +0 -0
  224. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/group.md +0 -0
  225. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/hide.md +0 -0
  226. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/label.md +0 -0
  227. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/layout.md +0 -0
  228. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/lineinput.md +0 -0
  229. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/listbox.md +0 -0
  230. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/messagebox.md +0 -0
  231. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/move.md +0 -0
  232. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/multiline.md +0 -0
  233. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/on.md +0 -0
  234. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/pushbutton.md +0 -0
  235. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/remove.md +0 -0
  236. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/select.md +0 -0
  237. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/set.md +0 -0
  238. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/keywords/window.md +0 -0
  239. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/values/attribute.md +0 -0
  240. {easycoder-260320.2 → easycoder-260322.1}/doc/graphics/values/window.md +0 -0
  241. {easycoder-260320.2 → easycoder-260322.1}/easycoder/debugger/__init__.py +0 -0
  242. {easycoder-260320.2 → easycoder-260322.1}/easycoder/debugger/ec_dbg_value_display copy.py +0 -0
  243. {easycoder-260320.2 → easycoder-260322.1}/easycoder/debugger/ec_dbg_value_display.py +0 -0
  244. {easycoder-260320.2 → easycoder-260322.1}/easycoder/debugger/ec_dbg_watch_list copy.py +0 -0
  245. {easycoder-260320.2 → easycoder-260322.1}/easycoder/debugger/ec_dbg_watchlist.py +0 -0
  246. {easycoder-260320.2 → easycoder-260322.1}/easycoder/debugger/ec_debug.py +0 -0
  247. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_border.py +0 -0
  248. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_classes.py +0 -0
  249. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_compiler.py +0 -0
  250. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_condition.py +0 -0
  251. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_gclasses.py +0 -0
  252. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_graphics.py +0 -0
  253. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_handler.py +0 -0
  254. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_keyboard.py +0 -0
  255. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_psutil.py +0 -0
  256. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_timestamp.py +0 -0
  257. {easycoder-260320.2 → easycoder-260322.1}/easycoder/ec_value.py +0 -0
  258. {easycoder-260320.2 → easycoder-260322.1}/easycoder/icons/close.png +0 -0
  259. {easycoder-260320.2 → easycoder-260322.1}/easycoder/icons/exit.png +0 -0
  260. {easycoder-260320.2 → easycoder-260322.1}/easycoder/icons/run.png +0 -0
  261. {easycoder-260320.2 → easycoder-260322.1}/easycoder/icons/step.png +0 -0
  262. {easycoder-260320.2 → easycoder-260322.1}/easycoder/icons/stop.png +0 -0
  263. {easycoder-260320.2 → easycoder-260322.1}/easycoder/icons/tick.png +0 -0
  264. {easycoder-260320.2 → easycoder-260322.1}/easycoder/mqtt_listener.py +0 -0
  265. {easycoder-260320.2 → easycoder-260322.1}/easycoder/mqtt_publisher.py +0 -0
  266. {easycoder-260320.2/lsp/syntaxes → easycoder-260322.1}/easycoder.tmLanguage.json +0 -0
  267. {easycoder-260320.2 → easycoder-260322.1}/flash.py +0 -0
  268. {easycoder-260320.2 → easycoder-260322.1}/images/Semoigo Dawn.jpg +0 -0
  269. {easycoder-260320.2 → easycoder-260322.1}/json/graphics-demo.json +0 -0
  270. {easycoder-260320.2 → easycoder-260322.1}/mqtt_listen.py +0 -0
  271. {easycoder-260320.2 → easycoder-260322.1}/mqtt_publish.py +0 -0
  272. {easycoder-260320.2 → easycoder-260322.1}/mqtt_test.html +0 -0
  273. {easycoder-260320.2 → easycoder-260322.1}/plugins/ec_p100.py +0 -0
  274. {easycoder-260320.2 → easycoder-260322.1}/plugins/ec_points.py +0 -0
  275. {easycoder-260320.2 → easycoder-260322.1}/plugins/ec_sql.py +0 -0
  276. {easycoder-260320.2 → easycoder-260322.1}/pyproject.toml +0 -0
  277. {easycoder-260320.2 → easycoder-260322.1}/spec/README.md +0 -0
  278. {easycoder-260320.2 → easycoder-260322.1}/spec/easycoder-language-contract.md +0 -0
  279. {easycoder-260320.2 → easycoder-260322.1}/spec/easycoder-plugin-contract.md +0 -0
  280. {easycoder-260320.2 → easycoder-260322.1}/spec/easycoder-versioning-policy.md +0 -0
  281. {easycoder-260320.2 → easycoder-260322.1}/test.py +0 -0
  282. {easycoder-260320.2 → easycoder-260322.1}/testController.py +0 -0
  283. {easycoder-260320.2 → easycoder-260322.1}/testDoclets.py +0 -0
  284. {easycoder-260320.2 → easycoder-260322.1}/testServer.py +0 -0
  285. {easycoder-260320.2 → easycoder-260322.1}/test_debug_graphics.py +0 -0
  286. {easycoder-260320.2 → easycoder-260322.1}/test_debug_launch.py +0 -0
  287. {easycoder-260320.2 → easycoder-260322.1}/test_init_debug.py +0 -0
  288. {easycoder-260320.2 → easycoder-260322.1}/test_initializers.py +0 -0
  289. {easycoder-260320.2 → easycoder-260322.1}/test_mqtt_listener.py +0 -0
  290. {easycoder-260320.2 → easycoder-260322.1}/test_mqtt_publisher.py +0 -0
  291. {easycoder-260320.2 → easycoder-260322.1}/testdbg.py +0 -0
  292. {easycoder-260320.2 → easycoder-260322.1}/testg.py +0 -0
  293. {easycoder-260320.2 → easycoder-260322.1}/testgetconfig.py +0 -0
  294. {easycoder-260320.2 → easycoder-260322.1}/testmodules.py +0 -0
  295. {easycoder-260320.2 → easycoder-260322.1}/testmqtt.py +0 -0
  296. {easycoder-260320.2 → easycoder-260322.1}/testnewui.py +0 -0
  297. {easycoder-260320.2 → easycoder-260322.1}/testrbr.py +0 -0
  298. {easycoder-260320.2 → easycoder-260322.1}/testrc.py +0 -0
  299. {easycoder-260320.2 → easycoder-260322.1}/testrmain.py +0 -0
  300. {easycoder-260320.2 → easycoder-260322.1}/tests/benchmark.ecs +0 -0
  301. {easycoder-260320.2 → easycoder-260322.1}/tests/child.ecs +0 -0
  302. {easycoder-260320.2 → easycoder-260322.1}/tests/ec_mqtt.py +0 -0
  303. {easycoder-260320.2 → easycoder-260322.1}/tests/editor_server.ecs +0 -0
  304. {easycoder-260320.2 → easycoder-260322.1}/tests/fizzbuzz.ecs +0 -0
  305. {easycoder-260320.2 → easycoder-260322.1}/tests/hello.ecs +0 -0
  306. {easycoder-260320.2 → easycoder-260322.1}/tests/mqtt.ecs +0 -0
  307. {easycoder-260320.2 → easycoder-260322.1}/tests/mqtt_listener.ecs +0 -0
  308. {easycoder-260320.2 → easycoder-260322.1}/tests/mqtt_publisher.ecs +0 -0
  309. {easycoder-260320.2 → easycoder-260322.1}/tests/parent.ecs +0 -0
  310. {easycoder-260320.2 → easycoder-260322.1}/tests/points.ecs +0 -0
  311. {easycoder-260320.2 → easycoder-260322.1}/tests/rbr_ui.py +0 -0
  312. {easycoder-260320.2 → easycoder-260322.1}/tests/rbrconf.ecs +0 -0
  313. {easycoder-260320.2 → easycoder-260322.1}/tests/rbrwidgets.py +0 -0
  314. {easycoder-260320.2 → easycoder-260322.1}/tests/server.ecs +0 -0
  315. {easycoder-260320.2 → easycoder-260322.1}/tests/server_test.html +0 -0
  316. {easycoder-260320.2 → easycoder-260322.1}/tests/server_test.sh +0 -0
  317. {easycoder-260320.2 → easycoder-260322.1}/tests/test.ecs +0 -0
  318. {easycoder-260320.2 → easycoder-260322.1}/tests/testg.ecs +0 -0
  319. {easycoder-260320.2 → easycoder-260322.1}/tests/tests.ecs +0 -0
  320. {easycoder-260320.2 → easycoder-260322.1}/tests.py +0 -0
  321. {easycoder-260320.2 → easycoder-260322.1}/testsql.py +0 -0
  322. {easycoder-260320.2 → easycoder-260322.1}/testui.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: easycoder
3
- Version: 260320.2
3
+ Version: 260322.1
4
4
  Summary: Rapid scripting in English
5
5
  Keywords: compiler,scripting,prototyping,programming,coding,python,low code,hypertalk,computer language,learn to code
6
6
  Author-email: Graham Trott <gtanyware@gmail.com>
@@ -3,7 +3,7 @@
3
3
  import importlib
4
4
  import math
5
5
 
6
- __version__ = "260320.2"
6
+ __version__ = "260322.1"
7
7
 
8
8
  from .ec_classes import *
9
9
  from .ec_compiler import *
@@ -2120,7 +2120,7 @@ class Core(Handler):
2120
2120
  return value
2121
2121
  return None
2122
2122
 
2123
- if token in ['now', 'today', 'newline', 'tab', 'empty']:
2123
+ if token in ['now', 'today', 'newline', 'tab', 'empty', 'cwd']:
2124
2124
  return value
2125
2125
 
2126
2126
  if token in ['stringify', 'prettify', 'json', 'lowercase', 'uppercase', 'hash', 'random', float, 'integer', 'encode', 'decode']:
@@ -2291,6 +2291,9 @@ class Core(Handler):
2291
2291
  token = self.nextToken()
2292
2292
  if token in ['in', 'of']:
2293
2293
  value.target = self.nextValue() # type: ignore
2294
+ if self.peek() == 'type':
2295
+ self.nextToken()
2296
+ value.filter = self.nextValue() # type: ignore
2294
2297
  return value
2295
2298
  return None
2296
2299
 
@@ -2361,9 +2364,13 @@ class Core(Handler):
2361
2364
  return ECValue(type=str, content=json.dumps(self.program.argv))
2362
2365
 
2363
2366
  def v_arg(self, v):
2364
- index = self.textify(v['index'])
2367
+ index = self.textify(v.index)
2368
+ if not hasattr(self.program, 'argv') or self.program.argv is None:
2369
+ RuntimeError(self.program, 'No command-line arguments were provided')
2370
+ return ECValue(type=str, content='')
2365
2371
  if index >= len(self.program.argv):
2366
- RuntimeError(self.program, 'Index exceeds # of args')
2372
+ RuntimeError(self.program, f'Argument index {index} out of range (only {len(self.program.argv)} args provided)')
2373
+ return ECValue(type=str, content='')
2367
2374
  return ECValue(type=str, content=self.program.argv[index])
2368
2375
 
2369
2376
  def v_bool(self, v):
@@ -2373,8 +2380,8 @@ class Core(Handler):
2373
2380
  return self.v_bool(v)
2374
2381
 
2375
2382
  def v_cos(self, v):
2376
- angle = self.textify(v['angle'])
2377
- radius = self.textify(v['radius'])
2383
+ angle = self.textify(v.angle)
2384
+ radius = self.textify(v.radius)
2378
2385
  return ECValue(type=int, content=round(math.cos(angle * 0.01745329) * radius))
2379
2386
 
2380
2387
  def v_count(self, v):
@@ -2453,7 +2460,13 @@ class Core(Handler):
2453
2460
 
2454
2461
  def v_files(self, v):
2455
2462
  path = self.textify(v.target)
2456
- return ECValue(type=str, content=json.dumps(os.listdir(path)))
2463
+ filter_ext = self.textify(v.filter) if v.filter else None
2464
+ entries = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]
2465
+ if filter_ext:
2466
+ exts = {e.strip().lstrip('.') for e in filter_ext.split(',')}
2467
+ entries = [f for f in entries if os.path.splitext(f)[1].lstrip('.').lower() in exts]
2468
+ entries.sort()
2469
+ return ECValue(type=str, content=json.dumps(entries))
2457
2470
 
2458
2471
  def v_float(self, v):
2459
2472
  val = self.textify(v.getContent())
@@ -2563,7 +2576,7 @@ class Core(Handler):
2563
2576
  return ECValue(type=str, content=self.program.message)
2564
2577
 
2565
2578
  def v_modification(self, v):
2566
- fileName = self.textify(v['fileName'])
2579
+ fileName = self.textify(v.fileName)
2567
2580
  ts = int(os.stat(self.resolveLocalPath(fileName)).st_mtime)
2568
2581
  return ECValue(type=int, content=ts)
2569
2582
 
@@ -2575,6 +2588,9 @@ class Core(Handler):
2575
2588
  def v_newline(self, v):
2576
2589
  return ECValue(type=str, content='\n')
2577
2590
 
2591
+ def v_cwd(self, v):
2592
+ return ECValue(type=str, content=os.getcwd())
2593
+
2578
2594
  def v_now(self, v):
2579
2595
  return ECValue(type=int, content=int(time.time() * 1000))
2580
2596
 
@@ -2642,8 +2658,8 @@ class Core(Handler):
2642
2658
  return ECValue(type=str, content='\t')
2643
2659
 
2644
2660
  def v_tan(self, v):
2645
- angle = self.textify(v['angle'])
2646
- radius = self.textify(v['radius'])
2661
+ angle = self.textify(v.angle)
2662
+ radius = self.textify(v.radius)
2647
2663
  return ECValue(type=int, content=round(math.tan(angle * 0.01745329) * radius))
2648
2664
 
2649
2665
  def v_ticker(self, v):
@@ -2673,7 +2689,7 @@ class Core(Handler):
2673
2689
 
2674
2690
  def v_type(self, v):
2675
2691
  value = ECValue(type=str)
2676
- val = self.textify(v['value'])
2692
+ val = self.textify(v.value)
2677
2693
  if val is None:
2678
2694
  value.setContent('none')
2679
2695
  elif type(val) is str:
@@ -2812,6 +2828,7 @@ class Core(Handler):
2812
2828
  return condition
2813
2829
 
2814
2830
  if token == 'includes':
2831
+ self.nextToken()
2815
2832
  condition.value2 = self.nextValue() # type: ignore
2816
2833
  return condition
2817
2834
 
@@ -210,7 +210,7 @@ class ECTopic(ECObject):
210
210
  return ""
211
211
  if v is None:
212
212
  return ""
213
- return v['name']
213
+ return v.name
214
214
 
215
215
  def getQoS(self):
216
216
  v = self.getValue()
@@ -218,7 +218,7 @@ class ECTopic(ECObject):
218
218
  return 0
219
219
  if v is None:
220
220
  return 0
221
- return int(v['qos'])
221
+ return int(v.qos)
222
222
 
223
223
  def textify(self):
224
224
  v = self.getValue()
@@ -54,10 +54,14 @@ class Program:
54
54
  if arg in ['-v', '--version']: return
55
55
  if arg[0:6] == 'debug ':
56
56
  print('Debug mode requested')
57
- self.scriptName = arg[6:]
57
+ parts = arg[6:].split()
58
+ self.scriptName = parts[0]
59
+ self.argv = parts[1:]
58
60
  self.debugging = True
59
61
  else:
60
- self.scriptName = arg
62
+ parts = arg.split()
63
+ self.scriptName = parts[0]
64
+ self.argv = parts[1:]
61
65
  self.debugging = False
62
66
 
63
67
  f = open(self.scriptName, 'r')
@@ -15,6 +15,7 @@ class ECServer(ECObject):
15
15
  self.response_event = threading.Event()
16
16
  self.response_value = None
17
17
  self.response_status = 200
18
+ self.response_content_type = None
18
19
 
19
20
  def setup(self, program, port):
20
21
  self.program = program
@@ -40,6 +41,7 @@ class ECServer(ECObject):
40
41
  self.response_event.clear()
41
42
  self.response_value = None
42
43
  self.response_status = 200
44
+ self.response_content_type = None
43
45
 
44
46
  if self.onRequestPC is not None:
45
47
  self.program.queueIntent(self.onRequestPC)
@@ -55,6 +57,8 @@ class ECServer(ECObject):
55
57
 
56
58
  bottle_response.headers['Access-Control-Allow-Origin'] = '*'
57
59
  bottle_response.status = self.response_status
60
+ if self.response_content_type:
61
+ bottle_response.content_type = self.response_content_type
58
62
  return self.response_value or ''
59
63
 
60
64
  t = threading.Thread(
@@ -74,9 +78,10 @@ class ECServer(ECObject):
74
78
  def getBody(self):
75
79
  return self.current_request['body'] if self.current_request else ''
76
80
 
77
- def setResponse(self, value, status=200):
81
+ def setResponse(self, value, status=200, content_type=None):
78
82
  self.response_value = value
79
83
  self.response_status = status
84
+ self.response_content_type = content_type
80
85
  self.response_event.set()
81
86
 
82
87
  ###############################################################################
@@ -187,10 +192,15 @@ class Server(Handler):
187
192
  self.checkObjectType(record, ECServer)
188
193
  command['server'] = record['name']
189
194
  command['status'] = 200
190
- if self.peek() == 'with':
195
+ command['type'] = None
196
+ while self.peek() == 'with':
191
197
  self.nextToken()
192
- self.skip('status')
193
- command['status'] = self.nextValue()
198
+ if self.peek() == 'status':
199
+ self.nextToken()
200
+ command['status'] = self.nextValue()
201
+ elif self.peek() == 'type':
202
+ self.nextToken()
203
+ command['type'] = self.nextValue()
194
204
  self.add(command)
195
205
  return True
196
206
  return False
@@ -200,7 +210,8 @@ class Server(Handler):
200
210
  server = self.getObject(record)
201
211
  value = self.textify(command['value'])
202
212
  status = int(self.textify(command['status'])) if isinstance(command['status'], ECValue) else command['status']
203
- server.setResponse(value, status)
213
+ content_type = self.textify(command['type']) if isinstance(command['type'], ECValue) else command['type']
214
+ server.setResponse(value, status, content_type)
204
215
  return self.nextPC()
205
216
 
206
217
  #############################################################################
@@ -1,39 +0,0 @@
1
- {
2
- "version": "0.2.0",
3
- "configurations": [
4
- {
5
- "name": "Run EasyCoder Extension",
6
- "type": "extensionHost",
7
- "request": "launch",
8
- "runtimeExecutable": "${execPath}",
9
- "args": [
10
- "--extensionDevelopmentPath=${workspaceFolder}"
11
- ],
12
- "outFiles": [
13
- "${workspaceFolder}/client/out/**/*.js"
14
- ],
15
- "preLaunchTask": "lsp: watch",
16
- "env": {
17
- "EASYCODER_LSP_DEBUGPY": "1"
18
- }
19
- },
20
- {
21
- "name": "Attach to EasyCoder LSP (Python)",
22
- "type": "python",
23
- "request": "attach",
24
- "connect": {
25
- "host": "127.0.0.1",
26
- "port": 5678
27
- }
28
- }
29
- ],
30
- "compounds": [
31
- {
32
- "name": "Run Extension + Attach LSP",
33
- "configurations": [
34
- "Run EasyCoder Extension",
35
- "Attach to EasyCoder LSP (Python)"
36
- ]
37
- }
38
- ]
39
- }
@@ -1,22 +0,0 @@
1
- {
2
- "version": "2.0.0",
3
- "tasks": [
4
- {
5
- "label": "lsp: compile",
6
- "type": "shell",
7
- "options": { "cwd": "${workspaceFolder}" },
8
- "command": "npm",
9
- "args": ["run", "compile"],
10
- "problemMatcher": ["$tsc"]
11
- },
12
- {
13
- "label": "lsp: watch",
14
- "type": "shell",
15
- "options": { "cwd": "${workspaceFolder}" },
16
- "command": "npm",
17
- "args": ["run", "watch"],
18
- "isBackground": true,
19
- "problemMatcher": ["$tsc-watch"]
20
- }
21
- ]
22
- }