easycoder 250424.3__tar.gz → 250503.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 (189) hide show
  1. {easycoder-250424.3 → easycoder-250503.1}/PKG-INFO +10 -9
  2. {easycoder-250424.3 → easycoder-250503.1}/README.md +9 -8
  3. easycoder-250503.1/config.ecs +1330 -0
  4. easycoder-250503.1/demo.ecs +34 -0
  5. {easycoder-250424.3 → easycoder-250503.1}/easycoder/__init__.py +1 -1
  6. {easycoder-250424.3 → easycoder-250503.1}/easycoder/ec_compiler.py +14 -4
  7. {easycoder-250424.3 → easycoder-250503.1}/easycoder/ec_core.py +48 -31
  8. {easycoder-250424.3 → easycoder-250503.1}/easycoder/ec_handler.py +1 -0
  9. {easycoder-250424.3 → easycoder-250503.1}/easycoder/ec_program.py +1 -1
  10. easycoder-250424.3/easycoder/ec_pyside6.py → easycoder-250503.1/easycoder/ec_pyside.py +320 -119
  11. easycoder-250503.1/temp.ecs +1330 -0
  12. easycoder-250503.1/test.ecs +11 -0
  13. easycoder-250503.1/test.py +3 -0
  14. easycoder-250424.3/config.ecs +0 -378
  15. easycoder-250424.3/test.ecg +0 -17
  16. easycoder-250424.3/test.ecs +0 -119
  17. easycoder-250424.3/test.json +0 -1
  18. easycoder-250424.3/test.py +0 -52
  19. {easycoder-250424.3 → easycoder-250503.1}/.gitignore +0 -0
  20. {easycoder-250424.3 → easycoder-250503.1}/LICENSE +0 -0
  21. {easycoder-250424.3 → easycoder-250503.1}/config.py +0 -0
  22. {easycoder-250424.3 → easycoder-250503.1}/doc/README.md +0 -0
  23. {easycoder-250424.3 → easycoder-250503.1}/doc/core/README.md +0 -0
  24. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/boolean.md +0 -0
  25. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/empty.md +0 -0
  26. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/ends.md +0 -0
  27. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/even.md +0 -0
  28. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/exists.md +0 -0
  29. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/greater.md +0 -0
  30. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/hasProperty.md +0 -0
  31. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/includes.md +0 -0
  32. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/is.md +0 -0
  33. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/less.md +0 -0
  34. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/list.md +0 -0
  35. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/none.md +0 -0
  36. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/not.md +0 -0
  37. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/numeric.md +0 -0
  38. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/object.md +0 -0
  39. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/odd.md +0 -0
  40. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/starts.md +0 -0
  41. {easycoder-250424.3 → easycoder-250503.1}/doc/core/conditions/string.md +0 -0
  42. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/add.md +0 -0
  43. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/append.md +0 -0
  44. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/assert.md +0 -0
  45. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/begin.md +0 -0
  46. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/clear.md +0 -0
  47. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/close.md +0 -0
  48. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/create.md +0 -0
  49. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/debug.md +0 -0
  50. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/decrement.md +0 -0
  51. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/delete.md +0 -0
  52. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/divide.md +0 -0
  53. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/exit.md +0 -0
  54. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/file.md +0 -0
  55. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/fork.md +0 -0
  56. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/get.md +0 -0
  57. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/go.md +0 -0
  58. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/gosub.md +0 -0
  59. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/if.md +0 -0
  60. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/import.md +0 -0
  61. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/increment.md +0 -0
  62. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/index.md +0 -0
  63. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/init.md +0 -0
  64. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/input.md +0 -0
  65. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/load.md +0 -0
  66. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/lock.md +0 -0
  67. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/log.md +0 -0
  68. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/module.md +0 -0
  69. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/multiply.md +0 -0
  70. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/negate.md +0 -0
  71. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/open.md +0 -0
  72. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/pop.md +0 -0
  73. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/post.md +0 -0
  74. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/print.md +0 -0
  75. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/push.md +0 -0
  76. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/put.md +0 -0
  77. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/read.md +0 -0
  78. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/release.md +0 -0
  79. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/replace.md +0 -0
  80. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/return.md +0 -0
  81. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/run.md +0 -0
  82. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/save.md +0 -0
  83. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/script.md +0 -0
  84. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/set.md +0 -0
  85. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/split.md +0 -0
  86. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/stack.md +0 -0
  87. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/stop.md +0 -0
  88. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/system.md +0 -0
  89. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/take.md +0 -0
  90. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/toggle.md +0 -0
  91. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/truncate.md +0 -0
  92. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/unlock.md +0 -0
  93. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/variable.md +0 -0
  94. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/wait.md +0 -0
  95. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/while.md +0 -0
  96. {easycoder-250424.3 → easycoder-250503.1}/doc/core/keywords/write.md +0 -0
  97. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/arg.md +0 -0
  98. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/args.md +0 -0
  99. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/cos.md +0 -0
  100. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/datime.md +0 -0
  101. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/decode.md +0 -0
  102. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/element.md +0 -0
  103. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/elements.md +0 -0
  104. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/empty.md +0 -0
  105. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/encode.md +0 -0
  106. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/error.md +0 -0
  107. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/files.md +0 -0
  108. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/float.md +0 -0
  109. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/from.md +0 -0
  110. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/hash.md +0 -0
  111. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/index.md +0 -0
  112. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/integer.md +0 -0
  113. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/json.md +0 -0
  114. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/keys.md +0 -0
  115. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/left.md +0 -0
  116. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/length.md +0 -0
  117. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/lowercase.md +0 -0
  118. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/memory.md +0 -0
  119. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/modification.md +0 -0
  120. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/modulo.md +0 -0
  121. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/newline.md +0 -0
  122. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/now.md +0 -0
  123. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/position.md +0 -0
  124. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/property.md +0 -0
  125. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/random.md +0 -0
  126. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/right.md +0 -0
  127. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/sin.md +0 -0
  128. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/stringify.md +0 -0
  129. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/tab.md +0 -0
  130. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/tan.md +0 -0
  131. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/timestamp.md +0 -0
  132. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/today.md +0 -0
  133. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/trim.md +0 -0
  134. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/type.md +0 -0
  135. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/uppercase.md +0 -0
  136. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/value.md +0 -0
  137. {easycoder-250424.3 → easycoder-250503.1}/doc/core/values/weekday.md +0 -0
  138. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/README.md +0 -0
  139. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/attach.md +0 -0
  140. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/close.md +0 -0
  141. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/create.md +0 -0
  142. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/ellipse.md +0 -0
  143. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/image.md +0 -0
  144. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/move.md +0 -0
  145. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/on.md +0 -0
  146. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/rectangle.md +0 -0
  147. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/render.md +0 -0
  148. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/run.md +0 -0
  149. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/set.md +0 -0
  150. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/keywords/text.md +0 -0
  151. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/values/attribute.md +0 -0
  152. {easycoder-250424.3 → easycoder-250503.1}/doc/graphics/values/window.md +0 -0
  153. {easycoder-250424.3 → easycoder-250503.1}/easycoder/README.md +0 -0
  154. {easycoder-250424.3 → easycoder-250503.1}/easycoder/ec_classes.py +0 -0
  155. {easycoder-250424.3 → easycoder-250503.1}/easycoder/ec_condition.py +0 -0
  156. {easycoder-250424.3 → easycoder-250503.1}/easycoder/ec_graphics.py +0 -0
  157. {easycoder-250424.3 → easycoder-250503.1}/easycoder/ec_gutils.py +0 -0
  158. {easycoder-250424.3 → easycoder-250503.1}/easycoder/ec_timestamp.py +0 -0
  159. {easycoder-250424.3 → easycoder-250503.1}/easycoder/ec_value.py +0 -0
  160. {easycoder-250424.3 → easycoder-250503.1}/group.py +0 -0
  161. {easycoder-250424.3 → easycoder-250503.1}/images/Semoigo Dawn.jpg +0 -0
  162. {easycoder-250424.3 → easycoder-250503.1}/json/graphics-demo.json +0 -0
  163. {easycoder-250424.3 → easycoder-250503.1}/plugins/ec_keyboard.py +0 -0
  164. {easycoder-250424.3 → easycoder-250503.1}/plugins/ec_p100.py +0 -0
  165. {easycoder-250424.3 → easycoder-250503.1}/plugins/ec_pyside6.py +0 -0
  166. {easycoder-250424.3 → easycoder-250503.1}/plugins/keyboards/4-function.json +0 -0
  167. {easycoder-250424.3 → easycoder-250503.1}/plugins/keyboards/4-function.png +0 -0
  168. {easycoder-250424.3 → easycoder-250503.1}/plugins/keyboards/qwerty-0.json +0 -0
  169. {easycoder-250424.3 → easycoder-250503.1}/plugins/keyboards/qwerty-0.png +0 -0
  170. {easycoder-250424.3 → easycoder-250503.1}/plugins/keyboards/qwerty-1.json +0 -0
  171. {easycoder-250424.3 → easycoder-250503.1}/plugins/keyboards/qwerty-1.png +0 -0
  172. {easycoder-250424.3 → easycoder-250503.1}/plugins/keyboards/qwerty-2.json +0 -0
  173. {easycoder-250424.3 → easycoder-250503.1}/plugins/keyboards/qwerty-2.png +0 -0
  174. {easycoder-250424.3 → easycoder-250503.1}/plugins/keyboards/qwerty-3.json +0 -0
  175. {easycoder-250424.3 → easycoder-250503.1}/plugins/keyboards/qwerty-3.png +0 -0
  176. {easycoder-250424.3 → easycoder-250503.1}/plugins/points.py +0 -0
  177. {easycoder-250424.3 → easycoder-250503.1}/pyproject.toml +0 -0
  178. {easycoder-250424.3 → easycoder-250503.1}/scripts/README.md +0 -0
  179. {easycoder-250424.3 → easycoder-250503.1}/scripts/benchmark.ecs +0 -0
  180. {easycoder-250424.3 → easycoder-250503.1}/scripts/config.ecg +0 -0
  181. {easycoder-250424.3 → easycoder-250503.1}/scripts/connect.ecg +0 -0
  182. {easycoder-250424.3 → easycoder-250503.1}/scripts/ec_keyboard.py +0 -0
  183. {easycoder-250424.3 → easycoder-250503.1}/scripts/findxr.ecs +0 -0
  184. {easycoder-250424.3 → easycoder-250503.1}/scripts/fizzbuzz.ecs +0 -0
  185. {easycoder-250424.3 → easycoder-250503.1}/scripts/hello.ecs +0 -0
  186. {easycoder-250424.3 → easycoder-250503.1}/scripts/points.ecs +0 -0
  187. {easycoder-250424.3 → easycoder-250503.1}/scripts/test.ecs +0 -0
  188. {easycoder-250424.3 → easycoder-250503.1}/scripts/testg.ecg +0 -0
  189. {easycoder-250424.3 → easycoder-250503.1}/scripts/tests.ecs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: easycoder
3
- Version: 250424.3
3
+ Version: 250503.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>
@@ -11,7 +11,11 @@ Requires-Dist: pyside6
11
11
  Project-URL: Home, https://github.com/easycoder/easycoder-py
12
12
 
13
13
  # Introduction
14
- **_EasyCoder_** is a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line and a graphics module is under construction. The language is written in Python and it acts as a fairly thin wrapper around standard Python functions, giving fast compilation and good runtime performance for general applications.
14
+ **_EasyCoder_** is a high-level English-like domain-specific scripting language (DSL) suited for prototyping and rapid testing of ideas. It operates on the command line and a graphics module is under construction. The language is written in Python and it acts as a fairly thin wrapper around standard Python functions, giving fast compilation and good runtime performance for general applications.
15
+
16
+ **_EasyCoder_** is well suited to building command-line or graphical applications for expressing random logic such as operating procedures and rules, or controlling physical systems, primarily wifi devices. It is particularly easy to construct and issue REST commands to local or remote web servers.
17
+
18
+ For more advanced applications, **_EasyCoder_** is designed to be extensible, by enabling extra language syntax to be added via plugin-in modules. Once these are installed they act as seamless extensions to the basic syntax provided. **_EasyCoder_** derives its power from the use of rich and comprehensive language rather than a complex system of frameworks such as those commonly used in modern programming. This makes it very easy to learn as our brains are wired to operate that way. Having said that, the needs of most control systems are usually served by a fairly modest number of keywords and syntactic variants.
15
19
  <hr>
16
20
 
17
21
  There is also a JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser. For this, please visit
@@ -23,15 +27,12 @@ Website: [https://easycoder.github.io](https://easycoder.github.io)
23
27
  ## Quick Start
24
28
  Install **_EasyCoder_** in your Python environment:
25
29
  ```
26
- pip install requests pytz easycoder
30
+ pip install requests easycoder
27
31
  ```
28
32
 
29
33
  Test the install by typing the command `easycoder`.
30
34
  <hr>
31
- On Linux, this will probably fail as the installer places the executable file in the `$HOME/.local/bin` directory. So give the command
32
- ```
33
- export PATH=$HOME/.local/bin:$PATH
34
- ```
35
+ On Linux, this will probably fail as the installer places the executable file in the `$HOME/.local/bin` directory. So give the command `export PATH=$HOME/.local/bin:$PATH`.
35
36
 
36
37
  To make this change permanent, edit your `.profile` file, adding the following:
37
38
  ```
@@ -42,7 +43,7 @@ fi
42
43
  ```
43
44
  <hr>
44
45
 
45
- Now write a test script, 'hello.ecs', containing the following:
46
+ Now write a test script, `hello.ecs`, containing the following:
46
47
  ```
47
48
  print `Hello, world!`
48
49
  exit
@@ -84,7 +85,7 @@ Here in the repository is a folder called `scripts` containing some sample scrip
84
85
  `benchmark.ecs` allows the performance of **_EasyCoder_** to be compared to other languages if a similar script is written for each one.
85
86
 
86
87
  ## Graphical programming
87
- **_EasyCoder_** includes a graphical programming environment based on PySide6, that is in the early stages of development. Some demo scripts will be included in the `scripts` directory as development proceeds.
88
+ **_EasyCoder_** includes a graphical programming environment based on PySide6, that is in under development. Some demo scripts will be included in the `scripts` directory as development proceeds. Anyone wishing to track progress can do so via this repository. At the time of writing we are transitioning from an early version based on PySimpleGUI to one based on PySide, the latter being an open product that matches the needs of a DSL better than does the former.
88
89
 
89
90
  ## Significant features
90
91
 
@@ -1,5 +1,9 @@
1
1
  # Introduction
2
- **_EasyCoder_** is a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line and a graphics module is under construction. The language is written in Python and it acts as a fairly thin wrapper around standard Python functions, giving fast compilation and good runtime performance for general applications.
2
+ **_EasyCoder_** is a high-level English-like domain-specific scripting language (DSL) suited for prototyping and rapid testing of ideas. It operates on the command line and a graphics module is under construction. The language is written in Python and it acts as a fairly thin wrapper around standard Python functions, giving fast compilation and good runtime performance for general applications.
3
+
4
+ **_EasyCoder_** is well suited to building command-line or graphical applications for expressing random logic such as operating procedures and rules, or controlling physical systems, primarily wifi devices. It is particularly easy to construct and issue REST commands to local or remote web servers.
5
+
6
+ For more advanced applications, **_EasyCoder_** is designed to be extensible, by enabling extra language syntax to be added via plugin-in modules. Once these are installed they act as seamless extensions to the basic syntax provided. **_EasyCoder_** derives its power from the use of rich and comprehensive language rather than a complex system of frameworks such as those commonly used in modern programming. This makes it very easy to learn as our brains are wired to operate that way. Having said that, the needs of most control systems are usually served by a fairly modest number of keywords and syntactic variants.
3
7
  <hr>
4
8
 
5
9
  There is also a JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser. For this, please visit
@@ -11,15 +15,12 @@ Website: [https://easycoder.github.io](https://easycoder.github.io)
11
15
  ## Quick Start
12
16
  Install **_EasyCoder_** in your Python environment:
13
17
  ```
14
- pip install requests pytz easycoder
18
+ pip install requests easycoder
15
19
  ```
16
20
 
17
21
  Test the install by typing the command `easycoder`.
18
22
  <hr>
19
- On Linux, this will probably fail as the installer places the executable file in the `$HOME/.local/bin` directory. So give the command
20
- ```
21
- export PATH=$HOME/.local/bin:$PATH
22
- ```
23
+ On Linux, this will probably fail as the installer places the executable file in the `$HOME/.local/bin` directory. So give the command `export PATH=$HOME/.local/bin:$PATH`.
23
24
 
24
25
  To make this change permanent, edit your `.profile` file, adding the following:
25
26
  ```
@@ -30,7 +31,7 @@ fi
30
31
  ```
31
32
  <hr>
32
33
 
33
- Now write a test script, 'hello.ecs', containing the following:
34
+ Now write a test script, `hello.ecs`, containing the following:
34
35
  ```
35
36
  print `Hello, world!`
36
37
  exit
@@ -72,7 +73,7 @@ Here in the repository is a folder called `scripts` containing some sample scrip
72
73
  `benchmark.ecs` allows the performance of **_EasyCoder_** to be compared to other languages if a similar script is written for each one.
73
74
 
74
75
  ## Graphical programming
75
- **_EasyCoder_** includes a graphical programming environment based on PySide6, that is in the early stages of development. Some demo scripts will be included in the `scripts` directory as development proceeds.
76
+ **_EasyCoder_** includes a graphical programming environment based on PySide6, that is in under development. Some demo scripts will be included in the `scripts` directory as development proceeds. Anyone wishing to track progress can do so via this repository. At the time of writing we are transitioning from an early version based on PySimpleGUI to one based on PySide, the latter being an open product that matches the needs of a DSL better than does the former.
76
77
 
77
78
  ## Significant features
78
79