easycoder 250611.5__tar.gz → 250612.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.

Potentially problematic release.


This version of easycoder might be problematic. Click here for more details.

Files changed (168) hide show
  1. {easycoder-250611.5 → easycoder-250612.1}/PKG-INFO +1 -1
  2. {easycoder-250611.5 → easycoder-250612.1}/doc/core/README.md +1 -1
  3. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/negate.md +1 -1
  4. easycoder-250612.1/doc/core/keywords/on.md +14 -0
  5. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/open.md +1 -1
  6. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/release.md +2 -2
  7. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/script.md +1 -1
  8. easycoder-250612.1/doc/core/keywords/send.md +14 -0
  9. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/set.md +2 -2
  10. easycoder-250612.1/doc/core/keywords/shuffle.md +18 -0
  11. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/split.md +1 -1
  12. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/unlock.md +3 -3
  13. easycoder-250612.1/doc/core/keywords/use.md +17 -0
  14. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/variable.md +1 -1
  15. {easycoder-250611.5 → easycoder-250612.1}/easycoder/__init__.py +1 -1
  16. {easycoder-250611.5 → easycoder-250612.1}/easycoder/ec_core.py +17 -31
  17. {easycoder-250611.5 → easycoder-250612.1}/.gitignore +0 -0
  18. {easycoder-250611.5 → easycoder-250612.1}/LICENSE +0 -0
  19. {easycoder-250611.5 → easycoder-250612.1}/README.md +0 -0
  20. {easycoder-250611.5 → easycoder-250612.1}/backdrop.jpg +0 -0
  21. {easycoder-250611.5 → easycoder-250612.1}/doc/README.md +0 -0
  22. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/boolean.md +0 -0
  23. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/empty.md +0 -0
  24. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/ends.md +0 -0
  25. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/even.md +0 -0
  26. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/exists.md +0 -0
  27. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/greater.md +0 -0
  28. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/hasProperty.md +0 -0
  29. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/includes.md +0 -0
  30. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/is.md +0 -0
  31. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/less.md +0 -0
  32. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/list.md +0 -0
  33. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/none.md +0 -0
  34. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/not.md +0 -0
  35. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/numeric.md +0 -0
  36. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/object.md +0 -0
  37. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/odd.md +0 -0
  38. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/starts.md +0 -0
  39. {easycoder-250611.5 → easycoder-250612.1}/doc/core/conditions/string.md +0 -0
  40. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/add.md +0 -0
  41. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/append.md +0 -0
  42. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/assert.md +0 -0
  43. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/begin.md +0 -0
  44. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/clear.md +0 -0
  45. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/close.md +0 -0
  46. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/create.md +0 -0
  47. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/debug.md +0 -0
  48. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/decrement.md +0 -0
  49. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/delete.md +0 -0
  50. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/divide.md +0 -0
  51. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/exit.md +0 -0
  52. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/file.md +0 -0
  53. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/fork.md +0 -0
  54. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/get.md +0 -0
  55. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/go.md +0 -0
  56. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/gosub.md +0 -0
  57. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/if.md +0 -0
  58. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/import.md +0 -0
  59. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/increment.md +0 -0
  60. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/index.md +0 -0
  61. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/init.md +0 -0
  62. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/input.md +0 -0
  63. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/load.md +0 -0
  64. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/lock.md +0 -0
  65. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/log.md +0 -0
  66. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/module.md +0 -0
  67. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/multiply.md +0 -0
  68. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/pop.md +0 -0
  69. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/post.md +0 -0
  70. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/print.md +0 -0
  71. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/push.md +0 -0
  72. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/put.md +0 -0
  73. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/read.md +0 -0
  74. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/replace.md +0 -0
  75. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/return.md +0 -0
  76. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/run.md +0 -0
  77. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/save.md +0 -0
  78. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/stack.md +0 -0
  79. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/stop.md +0 -0
  80. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/system.md +0 -0
  81. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/take.md +0 -0
  82. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/toggle.md +0 -0
  83. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/truncate.md +0 -0
  84. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/wait.md +0 -0
  85. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/while.md +0 -0
  86. {easycoder-250611.5 → easycoder-250612.1}/doc/core/keywords/write.md +0 -0
  87. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/arg.md +0 -0
  88. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/args.md +0 -0
  89. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/cos.md +0 -0
  90. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/datime.md +0 -0
  91. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/decode.md +0 -0
  92. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/element.md +0 -0
  93. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/elements.md +0 -0
  94. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/empty.md +0 -0
  95. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/encode.md +0 -0
  96. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/error.md +0 -0
  97. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/files.md +0 -0
  98. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/float.md +0 -0
  99. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/from.md +0 -0
  100. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/hash.md +0 -0
  101. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/index.md +0 -0
  102. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/integer.md +0 -0
  103. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/json.md +0 -0
  104. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/keys.md +0 -0
  105. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/left.md +0 -0
  106. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/length.md +0 -0
  107. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/lowercase.md +0 -0
  108. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/memory.md +0 -0
  109. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/modification.md +0 -0
  110. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/modulo.md +0 -0
  111. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/newline.md +0 -0
  112. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/now.md +0 -0
  113. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/position.md +0 -0
  114. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/property.md +0 -0
  115. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/random.md +0 -0
  116. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/right.md +0 -0
  117. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/sin.md +0 -0
  118. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/stringify.md +0 -0
  119. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/tab.md +0 -0
  120. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/tan.md +0 -0
  121. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/timestamp.md +0 -0
  122. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/today.md +0 -0
  123. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/trim.md +0 -0
  124. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/type.md +0 -0
  125. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/uppercase.md +0 -0
  126. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/value.md +0 -0
  127. {easycoder-250611.5 → easycoder-250612.1}/doc/core/values/weekday.md +0 -0
  128. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/README.md +0 -0
  129. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/attach.md +0 -0
  130. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/close.md +0 -0
  131. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/create.md +0 -0
  132. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/ellipse.md +0 -0
  133. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/image.md +0 -0
  134. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/move.md +0 -0
  135. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/on.md +0 -0
  136. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/rectangle.md +0 -0
  137. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/render.md +0 -0
  138. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/run.md +0 -0
  139. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/set.md +0 -0
  140. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/keywords/text.md +0 -0
  141. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/values/attribute.md +0 -0
  142. {easycoder-250611.5 → easycoder-250612.1}/doc/graphics/values/window.md +0 -0
  143. {easycoder-250611.5 → easycoder-250612.1}/easycoder/README.md +0 -0
  144. {easycoder-250611.5 → easycoder-250612.1}/easycoder/ec_classes.py +0 -0
  145. {easycoder-250611.5 → easycoder-250612.1}/easycoder/ec_compiler.py +0 -0
  146. {easycoder-250611.5 → easycoder-250612.1}/easycoder/ec_condition.py +0 -0
  147. {easycoder-250611.5 → easycoder-250612.1}/easycoder/ec_handler.py +0 -0
  148. {easycoder-250611.5 → easycoder-250612.1}/easycoder/ec_program.py +0 -0
  149. {easycoder-250611.5 → easycoder-250612.1}/easycoder/ec_pyside.py +0 -0
  150. {easycoder-250611.5 → easycoder-250612.1}/easycoder/ec_timestamp.py +0 -0
  151. {easycoder-250611.5 → easycoder-250612.1}/easycoder/ec_value.py +0 -0
  152. {easycoder-250611.5 → easycoder-250612.1}/images/Semoigo Dawn.jpg +0 -0
  153. {easycoder-250611.5 → easycoder-250612.1}/json/graphics-demo.json +0 -0
  154. {easycoder-250611.5 → easycoder-250612.1}/plugins/ec_keyboard.py +0 -0
  155. {easycoder-250611.5 → easycoder-250612.1}/plugins/ec_p100.py +0 -0
  156. {easycoder-250611.5 → easycoder-250612.1}/plugins/ec_pyside6.py +0 -0
  157. {easycoder-250611.5 → easycoder-250612.1}/plugins/points.py +0 -0
  158. {easycoder-250611.5 → easycoder-250612.1}/pyproject.toml +0 -0
  159. {easycoder-250611.5 → easycoder-250612.1}/scripts/benchmark.ecs +0 -0
  160. {easycoder-250611.5 → easycoder-250612.1}/scripts/config.ecg +0 -0
  161. {easycoder-250611.5 → easycoder-250612.1}/scripts/ec_keyboard.py +0 -0
  162. {easycoder-250611.5 → easycoder-250612.1}/scripts/findxr.ecs +0 -0
  163. {easycoder-250611.5 → easycoder-250612.1}/scripts/fizzbuzz.ecs +0 -0
  164. {easycoder-250611.5 → easycoder-250612.1}/scripts/hello.ecs +0 -0
  165. {easycoder-250611.5 → easycoder-250612.1}/scripts/points.ecs +0 -0
  166. {easycoder-250611.5 → easycoder-250612.1}/scripts/test.ecs +0 -0
  167. {easycoder-250611.5 → easycoder-250612.1}/scripts/tests.ecs +0 -0
  168. {easycoder-250611.5 → easycoder-250612.1}/testrc.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: easycoder
3
- Version: 250611.5
3
+ Version: 250612.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>
@@ -10,7 +10,7 @@ There are three primary components to the language:
10
10
 
11
11
  The core keywords are:
12
12
 
13
- [add](keywords/add.md) [append](keywords/append.md) [assert](keywords/assert.md) [begin](keywords/begin.md) [clear](keywords/clear.md) [close](keywords/close.md) [create](keywords/create.md) [debug](keywords/debug.md) [decrement](keywords/decrement.md) [delete](keywords/delete.md) [divide](keywords/divide.md) [exit](keywords/exit.md) [file](keywords/file.md) [fork](keywords/fork.md) [get](keywords/get.md) [go](keywords/go.md) [gosub](keywords/gosub.md) [if](keywords/if.md) [import](keywords/import.md) [increment](keywords/increment.md) [index](keywords/index.md) [init](keywords/init.md) [input](keywords/input.md) [load](keywords/load.md) [lock](keywords/lock.md) [module](keywords/module.md) [multiply](keywords/multiply.md) [negate](keywords/negate.md) [open](keywords/open.md) [pop](keywords/pop.md) [post](keywords/post.md) [print](keywords/print.md) [push](keywords/push.md) [put](keywords/put.md) [read](keywords/read.md) [replace](keywords/replace.md) [return](keywords/return.md) [run](keywords/run.md) [save](keywords/save.md) [script](keywords/script.md) [set](keywords/set.md) [split](keywords/split.md) [stack](keywords/stack.md) [stop](keywords/stop.md) [system](keywords/system.md) [take](keywords/take.md) [toggle](keywords/toggle.md) [truncate](keywords/truncate.md) [unlock](keywords/unlock.md) [variable](keywords/variable.md) [wait](keywords/wait.md) [while](keywords/while.md) [write](keywords/write.md)
13
+ [add](keywords/add.md) [append](keywords/append.md) [assert](keywords/assert.md) [begin](keywords/begin.md) [clear](keywords/clear.md) [close](keywords/close.md) [create](keywords/create.md) [debug](keywords/debug.md) [decrement](keywords/decrement.md) [delete](keywords/delete.md) [divide](keywords/divide.md) [exit](keywords/exit.md) [file](keywords/file.md) [fork](keywords/fork.md) [get](keywords/get.md) [go](keywords/go.md) [gosub](keywords/gosub.md) [if](keywords/if.md) [import](keywords/import.md) [increment](keywords/increment.md) [index](keywords/index.md) [init](keywords/init.md) [input](keywords/input.md) [load](keywords/load.md) [lock](keywords/lock.md) [log](keywords/log.md) [module](keywords/module.md) [multiply](keywords/multiply.md) [negate](keywords/negate.md) [on](keywords/on.md) [open](keywords/open.md) [pop](keywords/pop.md) [post](keywords/post.md) [print](keywords/print.md) [push](keywords/push.md) [put](keywords/put.md) [read](keywords/read.md) [release](keywords/release.md) [replace](keywords/replace.md) [return](keywords/return.md) [run](keywords/run.md) [save](keywords/save.md) [script](keywords/script.md) [send](keywords/send.md) [set](keywords/set.md) [shuffle](keywords/shuffle.md) [split](keywords/split.md) [stack](keywords/stack.md) [stop](keywords/stop.md) [system](keywords/system.md) [take](keywords/take.md) [toggle](keywords/toggle.md) [truncate](keywords/truncate.md) [unlock](keywords/unlock.md) [use](keywords/use.md) [variable](keywords/variable.md) [wait](keywords/wait.md) [while](keywords/while.md) [write](keywords/write.md)
14
14
 
15
15
  The core values are:
16
16
 
@@ -7,7 +7,7 @@
7
7
  ## Description:
8
8
  Negates a numeric variable (multiplies its value by -1).
9
9
 
10
- Next: [open](open.md)
10
+ Next: [on](on.md)
11
11
  Prev: [multiply](multiply.md)
12
12
 
13
13
  [Back](../../README.md)
@@ -0,0 +1,14 @@
1
+ # on
2
+
3
+ ## Syntax:
4
+ `on message {action}`
5
+ ## Example:
6
+ `on message go to HandleMessage`
7
+
8
+ ## Description:
9
+ When another script uses `send {message} to {module}` (see [send](send.md)) to send this module a message (a text string), the message is saved and the designated `{action}` is invoked. The message text can be retrieved using `the message`.
10
+
11
+ Next: [open](open.md)
12
+ Prev: [negate](negate.md)
13
+
14
+ [Back](../../README.md)
@@ -22,6 +22,6 @@
22
22
  Opens a disk file for reading, writing or appending. Each of the [file](file.md) variables must be declared as such as in the example.
23
23
 
24
24
  Next: [pop](pop.md)
25
- Prev: [negate](negate.md)
25
+ Prev: [on](on.md)
26
26
 
27
27
  [Back](../../README.md)
@@ -9,7 +9,7 @@
9
9
  ## Description:
10
10
  Release the parent script. When a child module is run it blocks the parent from running until either it exits or it issues the `release parent` command. This allows it to do initialisation that cannot be interrupted but which may involve timed delays.
11
11
 
12
- Next: [multiply](multiply.md)
13
- Prev: [lock](lock.md)
12
+ Next: [replace](replace.md)
13
+ Prev: [read](read.md)
14
14
 
15
15
  [Back](../../README.md)
@@ -8,7 +8,7 @@
8
8
  ## Description:
9
9
  Provides a name for the script. Note that `name` is literal text, not a script variable.
10
10
 
11
- Next: [set](set.md)
11
+ Next: [send](send.md)
12
12
  Prev: [save](save.md)
13
13
 
14
14
  [Back](../../README.md)
@@ -0,0 +1,14 @@
1
+ # send
2
+
3
+ ## Syntax:
4
+ `send {message} to {module}`
5
+ ## Examples:
6
+ ``send `No errors` to Main``
7
+
8
+ ## Description:
9
+ Sends a message to another script. See [on message](on.md).
10
+
11
+ Next: [set](set.md)
12
+ Prev: [script](script.md)
13
+
14
+ [Back](../../README.md)
@@ -25,7 +25,7 @@
25
25
 
26
26
  -- Sets the encoding to be used by the [encode](../values/encode.md) and [decode](../values/decode.md) value handlers. The encoder options are `utf-8` and `base64`. The default is `utf-8` if none is set by the script.
27
27
 
28
- Next: [split](split.md)
29
- Prev: [script](script.md)
28
+ Next: [shuffle](shuffle.md)
29
+ Prev: [send](send.md)
30
30
 
31
31
  [Back](../../README.md)
@@ -0,0 +1,18 @@
1
+ # shuffle
2
+
3
+ ## Syntax:
4
+ `shuffle {variable}`
5
+
6
+ ## Example:
7
+ `shuffle MyList`
8
+
9
+ ## Description:
10
+ Shuffles (reorders randomly) the contents of the named array.
11
+ EasyCoder has two array mechanisms. One is to hold a single value comprising a list of items (typically expressed as a JSON list). This is the type that can be shuffled with this command.
12
+
13
+ The second mechanism is where any variable can have multiple elements, an internal `index` variable specifying which element is pointed to. This kind of array always acts like a single value, and cannot be shuffled. See [set the elements of](set.md).
14
+
15
+ Next: [split](split.md)
16
+ Prev: [set](set.md)
17
+
18
+ [Back](../../README.md)
@@ -10,6 +10,6 @@
10
10
  Split a [variable](variable.md) containing a string into a number of parts on a given delimiter. The command sizes the variable to have as many elements as there are parts in the split string, and puts one part in each element.
11
11
 
12
12
  Next: [stack](stack.md)
13
- Prev: [set](set.md)
13
+ Prev: [shuffle](shuffle.md)
14
14
 
15
15
  [Back](../../README.md)
@@ -1,4 +1,4 @@
1
- # ulock
1
+ # unlock
2
2
 
3
3
  ## Syntax:
4
4
  `unlock {variable}`
@@ -9,7 +9,7 @@
9
9
  ## Description:
10
10
  Unlocks a locked variable to allow it to be modified. See also [lock](lock.md).
11
11
 
12
- Next: [lock](lock.md)
13
- Prev: [init](init.md)
12
+ Next: [use](use.md)
13
+ Prev: [truncate](truncate.md)
14
14
 
15
15
  [Back](../../README.md)
@@ -0,0 +1,17 @@
1
+ # use
2
+
3
+ ## Syntax:
4
+ `use {feature}`
5
+
6
+ ## Examples:
7
+ `use graphics`
8
+
9
+ ## Description:
10
+ This is a special directive that calls in special functionality that is a standard part of EasyCoder but not included in all cases. The only one currently available is `graphics`, which is not included automatically because some systems don't have a graphical interface. The new functionality extends the language to deal with the specific feature.
11
+
12
+ The `use` directive must always be placed at the top of a script, before any of its features have been called for.
13
+
14
+ Next: [variable](variable.md)
15
+ Prev: [unlock](unlock.md)
16
+
17
+ [Back](../../README.md)
@@ -12,6 +12,6 @@ Declare a variable - an arbitrary storage item. Variables may hold string, numer
12
12
  Variables can be assigned any number of elements - see [set the elements](set.md). Each element can hold a data value of any of the 3 types above.
13
13
 
14
14
  Next: [wait](wait.md)
15
- Prev: [unlock](toggle.md)
15
+ Prev: [use](use.md)
16
16
 
17
17
  [Back](../../README.md)
@@ -9,4 +9,4 @@ from .ec_program import *
9
9
  from .ec_timestamp import *
10
10
  from .ec_value import *
11
11
 
12
- __version__ = "250611.5"
12
+ __version__ = "250612.1"
@@ -110,14 +110,6 @@ class Core(Handler):
110
110
  self.putSymbolValue(target, val)
111
111
  return self.nextPC()
112
112
 
113
- # Define an array
114
- def k_array(self, command):
115
- return self.compileVariable(command)
116
-
117
- def r_array(self, command):
118
- return self.nextPC()
119
-
120
- # Assertion
121
113
  #assert {condition} [with {message}]
122
114
  def k_assert(self, command):
123
115
  command['test'] = self.nextCondition()
@@ -896,13 +888,6 @@ class Core(Handler):
896
888
  self.putSymbolValue(symbolRecord, value)
897
889
  return self.nextPC()
898
890
 
899
- # Define an object variable
900
- def k_object(self, command):
901
- return self.compileVariable(command)
902
-
903
- def r_object(self, command):
904
- return self.nextPC()
905
-
906
891
  # on message {action}
907
892
  def k_on(self, command):
908
893
  if self.nextIs('message'):
@@ -1187,6 +1172,16 @@ class Core(Handler):
1187
1172
  self.putSymbolValue(symbolRecord, value)
1188
1173
  return self.nextPC()
1189
1174
 
1175
+ # Release the parent script
1176
+ def k_release(self, command):
1177
+ if self.nextIs('parent'):
1178
+ self.add(command)
1179
+ return True
1180
+
1181
+ def r_release(self, command):
1182
+ self.program.releaseParent()
1183
+ return self.nextPC()
1184
+
1190
1185
  # Replace a substring
1191
1186
  #replace {value} with {value} in {variable}
1192
1187
  def k_replace(self, command):
@@ -1217,16 +1212,6 @@ class Core(Handler):
1217
1212
  self.putSymbolValue(templateRecord, value)
1218
1213
  return self.nextPC()
1219
1214
 
1220
- # Release the parent script
1221
- def k_release(self, command):
1222
- if self.nextIs('parent'):
1223
- self.add(command)
1224
- return True
1225
-
1226
- def r_release(self, command):
1227
- self.program.releaseParent()
1228
- return self.nextPC()
1229
-
1230
1215
  # Return from subroutine
1231
1216
  def k_return(self, command):
1232
1217
  self.add(command)
@@ -1281,11 +1266,6 @@ class Core(Handler):
1281
1266
  p(path).start(parent, module, exports)
1282
1267
  return 0
1283
1268
 
1284
- # Provide a name for the script
1285
- def k_script(self, command):
1286
- self.program.name = self.nextToken()
1287
- return True
1288
-
1289
1269
  # Save a value to a file
1290
1270
  def k_save(self, command):
1291
1271
  command['content'] = self.nextValue()
@@ -1329,8 +1309,9 @@ class Core(Handler):
1329
1309
  ssh = self.getVariable(command['ssh'])
1330
1310
  path = self.getRuntimeValue(command['path'])
1331
1311
  sftp = ssh['sftp']
1312
+ if path.endswith('.json'): content = json.dumps(content)
1332
1313
  try:
1333
- with sftp.open(path, 'w') as remote_file: remote_file.write(content.encode())
1314
+ with sftp.open(path, 'w') as remote_file: remote_file.write(content)
1334
1315
  except:
1335
1316
  errorReason = 'Unable to write to {path}'
1336
1317
  else:
@@ -1349,6 +1330,11 @@ class Core(Handler):
1349
1330
  RuntimeError(self.program, f'Error: {errorReason}')
1350
1331
  return self.nextPC()
1351
1332
 
1333
+ # Provide a name for the script
1334
+ def k_script(self, command):
1335
+ self.program.name = self.nextToken()
1336
+ return True
1337
+
1352
1338
  # Send a message to a module
1353
1339
  def k_send(self, command):
1354
1340
  command['message'] = self.nextValue()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes