easycoder 250403.1__tar.gz → 250403.2__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 (178) hide show
  1. {easycoder-250403.1 → easycoder-250403.2}/PKG-INFO +15 -10
  2. {easycoder-250403.1 → easycoder-250403.2}/README.md +14 -9
  3. {easycoder-250403.1 → easycoder-250403.2}/easycoder/__init__.py +1 -1
  4. {easycoder-250403.1 → easycoder-250403.2}/easycoder/ec_core.py +9 -4
  5. {easycoder-250403.1 → easycoder-250403.2}/test.ecs +1 -0
  6. easycoder-250403.1/easycoder/__init__.sync-conflict-20250331-210244-M3XB3VD.py +0 -12
  7. easycoder-250403.1/easycoder/ec_core.sync-conflict-20250331-210238-M3XB3VD.py +0 -2564
  8. {easycoder-250403.1 → easycoder-250403.2}/LICENSE +0 -0
  9. {easycoder-250403.1 → easycoder-250403.2}/doc/README.md +0 -0
  10. {easycoder-250403.1 → easycoder-250403.2}/doc/core/README.md +0 -0
  11. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/boolean.md +0 -0
  12. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/empty.md +0 -0
  13. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/ends.md +0 -0
  14. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/even.md +0 -0
  15. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/exists.md +0 -0
  16. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/greater.md +0 -0
  17. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/hasProperty.md +0 -0
  18. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/includes.md +0 -0
  19. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/is.md +0 -0
  20. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/less.md +0 -0
  21. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/list.md +0 -0
  22. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/none.md +0 -0
  23. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/not.md +0 -0
  24. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/numeric.md +0 -0
  25. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/object.md +0 -0
  26. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/odd.md +0 -0
  27. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/starts.md +0 -0
  28. {easycoder-250403.1 → easycoder-250403.2}/doc/core/conditions/string.md +0 -0
  29. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/add.md +0 -0
  30. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/append.md +0 -0
  31. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/assert.md +0 -0
  32. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/begin.md +0 -0
  33. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/clear.md +0 -0
  34. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/close.md +0 -0
  35. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/create.md +0 -0
  36. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/debug.md +0 -0
  37. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/decrement.md +0 -0
  38. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/delete.md +0 -0
  39. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/divide.md +0 -0
  40. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/exit.md +0 -0
  41. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/file.md +0 -0
  42. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/fork.md +0 -0
  43. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/get.md +0 -0
  44. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/go.md +0 -0
  45. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/gosub.md +0 -0
  46. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/if.md +0 -0
  47. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/import.md +0 -0
  48. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/increment.md +0 -0
  49. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/index.md +0 -0
  50. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/init.md +0 -0
  51. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/input.md +0 -0
  52. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/load.md +0 -0
  53. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/lock.md +0 -0
  54. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/log.md +0 -0
  55. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/module.md +0 -0
  56. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/multiply.md +0 -0
  57. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/negate.md +0 -0
  58. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/open.md +0 -0
  59. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/pop.md +0 -0
  60. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/post.md +0 -0
  61. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/print.md +0 -0
  62. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/push.md +0 -0
  63. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/put.md +0 -0
  64. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/read.md +0 -0
  65. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/release.md +0 -0
  66. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/replace.md +0 -0
  67. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/return.md +0 -0
  68. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/run.md +0 -0
  69. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/save.md +0 -0
  70. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/script.md +0 -0
  71. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/set.md +0 -0
  72. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/split.md +0 -0
  73. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/stack.md +0 -0
  74. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/stop.md +0 -0
  75. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/system.md +0 -0
  76. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/take.md +0 -0
  77. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/toggle.md +0 -0
  78. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/truncate.md +0 -0
  79. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/unlock.md +0 -0
  80. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/variable.md +0 -0
  81. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/wait.md +0 -0
  82. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/while.md +0 -0
  83. {easycoder-250403.1 → easycoder-250403.2}/doc/core/keywords/write.md +0 -0
  84. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/arg.md +0 -0
  85. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/args.md +0 -0
  86. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/cos.md +0 -0
  87. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/datime.md +0 -0
  88. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/decode.md +0 -0
  89. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/element.md +0 -0
  90. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/elements.md +0 -0
  91. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/empty.md +0 -0
  92. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/encode.md +0 -0
  93. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/error.md +0 -0
  94. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/files.md +0 -0
  95. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/float.md +0 -0
  96. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/from.md +0 -0
  97. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/hash.md +0 -0
  98. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/index.md +0 -0
  99. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/integer.md +0 -0
  100. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/json.md +0 -0
  101. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/keys.md +0 -0
  102. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/left.md +0 -0
  103. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/length.md +0 -0
  104. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/lowercase.md +0 -0
  105. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/memory.md +0 -0
  106. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/modification.md +0 -0
  107. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/modulo.md +0 -0
  108. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/newline.md +0 -0
  109. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/now.md +0 -0
  110. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/position.md +0 -0
  111. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/property.md +0 -0
  112. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/random.md +0 -0
  113. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/right.md +0 -0
  114. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/sin.md +0 -0
  115. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/stringify.md +0 -0
  116. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/tab.md +0 -0
  117. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/tan.md +0 -0
  118. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/timestamp.md +0 -0
  119. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/today.md +0 -0
  120. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/trim.md +0 -0
  121. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/type.md +0 -0
  122. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/uppercase.md +0 -0
  123. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/value.md +0 -0
  124. {easycoder-250403.1 → easycoder-250403.2}/doc/core/values/weekday.md +0 -0
  125. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/README.md +0 -0
  126. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/attach.md +0 -0
  127. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/close.md +0 -0
  128. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/create.md +0 -0
  129. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/ellipse.md +0 -0
  130. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/image.md +0 -0
  131. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/move.md +0 -0
  132. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/on.md +0 -0
  133. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/rectangle.md +0 -0
  134. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/render.md +0 -0
  135. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/run.md +0 -0
  136. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/set.md +0 -0
  137. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/keywords/text.md +0 -0
  138. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/values/attribute.md +0 -0
  139. {easycoder-250403.1 → easycoder-250403.2}/doc/graphics/values/window.md +0 -0
  140. {easycoder-250403.1 → easycoder-250403.2}/easycoder/README.md +0 -0
  141. {easycoder-250403.1 → easycoder-250403.2}/easycoder/ec_classes.py +0 -0
  142. {easycoder-250403.1 → easycoder-250403.2}/easycoder/ec_compiler.py +0 -0
  143. {easycoder-250403.1 → easycoder-250403.2}/easycoder/ec_condition.py +0 -0
  144. {easycoder-250403.1 → easycoder-250403.2}/easycoder/ec_graphics.py +0 -0
  145. {easycoder-250403.1 → easycoder-250403.2}/easycoder/ec_gutils.py +0 -0
  146. {easycoder-250403.1 → easycoder-250403.2}/easycoder/ec_handler.py +0 -0
  147. {easycoder-250403.1 → easycoder-250403.2}/easycoder/ec_program.py +0 -0
  148. {easycoder-250403.1 → easycoder-250403.2}/easycoder/ec_timestamp.py +0 -0
  149. {easycoder-250403.1 → easycoder-250403.2}/easycoder/ec_value.py +0 -0
  150. {easycoder-250403.1 → easycoder-250403.2}/images/Semoigo Dawn.jpg +0 -0
  151. {easycoder-250403.1 → easycoder-250403.2}/json/graphics-demo.json +0 -0
  152. {easycoder-250403.1 → easycoder-250403.2}/plugins/ec_keyboard.py +0 -0
  153. {easycoder-250403.1 → easycoder-250403.2}/plugins/ec_p100.py +0 -0
  154. {easycoder-250403.1 → easycoder-250403.2}/plugins/keyboards/4-function.json +0 -0
  155. {easycoder-250403.1 → easycoder-250403.2}/plugins/keyboards/4-function.png +0 -0
  156. {easycoder-250403.1 → easycoder-250403.2}/plugins/keyboards/qwerty-0.json +0 -0
  157. {easycoder-250403.1 → easycoder-250403.2}/plugins/keyboards/qwerty-0.png +0 -0
  158. {easycoder-250403.1 → easycoder-250403.2}/plugins/keyboards/qwerty-1.json +0 -0
  159. {easycoder-250403.1 → easycoder-250403.2}/plugins/keyboards/qwerty-1.png +0 -0
  160. {easycoder-250403.1 → easycoder-250403.2}/plugins/keyboards/qwerty-2.json +0 -0
  161. {easycoder-250403.1 → easycoder-250403.2}/plugins/keyboards/qwerty-2.png +0 -0
  162. {easycoder-250403.1 → easycoder-250403.2}/plugins/keyboards/qwerty-3.json +0 -0
  163. {easycoder-250403.1 → easycoder-250403.2}/plugins/keyboards/qwerty-3.png +0 -0
  164. {easycoder-250403.1 → easycoder-250403.2}/plugins/points.py +0 -0
  165. {easycoder-250403.1 → easycoder-250403.2}/pyproject.toml +0 -0
  166. {easycoder-250403.1 → easycoder-250403.2}/scripts/README.md +0 -0
  167. {easycoder-250403.1 → easycoder-250403.2}/scripts/benchmark.ecs +0 -0
  168. {easycoder-250403.1 → easycoder-250403.2}/scripts/config.ecg +0 -0
  169. {easycoder-250403.1 → easycoder-250403.2}/scripts/connect.ecg +0 -0
  170. {easycoder-250403.1 → easycoder-250403.2}/scripts/ec_keyboard.py +0 -0
  171. {easycoder-250403.1 → easycoder-250403.2}/scripts/findxr.ecs +0 -0
  172. {easycoder-250403.1 → easycoder-250403.2}/scripts/fizzbuzz.ecs +0 -0
  173. {easycoder-250403.1 → easycoder-250403.2}/scripts/hello.ecs +0 -0
  174. {easycoder-250403.1 → easycoder-250403.2}/scripts/points.ecs +0 -0
  175. {easycoder-250403.1 → easycoder-250403.2}/scripts/test.ecs +0 -0
  176. {easycoder-250403.1 → easycoder-250403.2}/scripts/testg.ecg +0 -0
  177. {easycoder-250403.1 → easycoder-250403.2}/scripts/tests.ecs +0 -0
  178. {easycoder-250403.1 → easycoder-250403.2}/test.ecg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: easycoder
3
- Version: 250403.1
3
+ Version: 250403.2
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>
@@ -45,32 +45,37 @@ fi
45
45
  Now write a test script, 'hello.ecs', containing the following:
46
46
  ```
47
47
  print `Hello, world!`
48
+ exit
48
49
  ```
49
50
  (Note the backticks.) This is traditionally the first program to be written in virtually any language. To run it, use `easycoder hello.ecs`.
50
51
 
51
- The output will look like this (the version number will differ):
52
+ The output will look like this (the version number will likely differ):
52
53
  ```
53
- EasyCoder version 250101.1
54
+ EasyCoder version 250403.1
54
55
  Compiled <anon>: 1 lines (2 tokens) in 0 ms
55
56
  Run <anon>
56
- 1-> Hello, world!
57
+ Hello, world!
57
58
  ```
58
59
 
60
+ Why the `exit`? Because EasyCoder can't tell that the program is finished. It might contain elements that are waiting for outside events, so without `exit` it just stops and waits. You can kill it by typing Control-C.
61
+
59
62
  It's conventional to add a program title to a script:
60
63
  ```
61
64
  ! Test script
62
65
  script Test
63
- print `Hello, world!`
66
+ log `Hello, world!`
67
+ exit
64
68
  ```
65
- The first line here is just a comment and has no effect on the running of the script. The second line gives the script a name, which is useful in debugging as it says which script was running. When run, the output is now
69
+
70
+ The first line here is just a comment and has no effect on the running of the script. The second line gives the script a name, which is useful in debugging as it says which script was running. I've also changed `print` to `log` to get more information from the script. When run, the output is now
66
71
  ```
67
- EasyCoder version 250101.1
72
+ EasyCoder version 250403.1
68
73
  Compiled Test: 3 lines (4 tokens) in 0 ms
69
74
  Run Test
70
- 3-> Hello, world!
75
+ 16:37:39.132311: 3-> Hello, world!
71
76
  ```
72
77
 
73
- As you might guess from the above, the print command shows the line in the script it was called from. This is very useful in tracking down debugging print commands in large scripts.
78
+ As you might guess from the above, the `log` command shows the time and the line in the script it was called from. This is very useful in tracking down debugging print commands in large scripts.
74
79
 
75
80
  Here in the repository is a folder called `scripts` containing some sample scripts:
76
81
 
@@ -78,7 +83,7 @@ Here in the repository is a folder called `scripts` containing some sample scrip
78
83
  `tests.ecs` is a test program containing many of the **_EasyCoder_** features
79
84
  `benchmark.ecs` allows the performance of **_EasyCoder_** to be compared to other languages if a similar script is written for each one.
80
85
 
81
- ## Graphical programmming
86
+ ## Graphical programming
82
87
  **_EasyCoder_** includes a graphical programming environment that is in the early stages of development. Some demo scripts will be included in the `scripts` directory; these can be recognised by the extension`.ecg`. To run them, first install `tkinter`. On Linux this is done with
83
88
  ```
84
89
  sudo apt install python3-tk
@@ -33,32 +33,37 @@ fi
33
33
  Now write a test script, 'hello.ecs', containing the following:
34
34
  ```
35
35
  print `Hello, world!`
36
+ exit
36
37
  ```
37
38
  (Note the backticks.) This is traditionally the first program to be written in virtually any language. To run it, use `easycoder hello.ecs`.
38
39
 
39
- The output will look like this (the version number will differ):
40
+ The output will look like this (the version number will likely differ):
40
41
  ```
41
- EasyCoder version 250101.1
42
+ EasyCoder version 250403.1
42
43
  Compiled <anon>: 1 lines (2 tokens) in 0 ms
43
44
  Run <anon>
44
- 1-> Hello, world!
45
+ Hello, world!
45
46
  ```
46
47
 
48
+ Why the `exit`? Because EasyCoder can't tell that the program is finished. It might contain elements that are waiting for outside events, so without `exit` it just stops and waits. You can kill it by typing Control-C.
49
+
47
50
  It's conventional to add a program title to a script:
48
51
  ```
49
52
  ! Test script
50
53
  script Test
51
- print `Hello, world!`
54
+ log `Hello, world!`
55
+ exit
52
56
  ```
53
- The first line here is just a comment and has no effect on the running of the script. The second line gives the script a name, which is useful in debugging as it says which script was running. When run, the output is now
57
+
58
+ The first line here is just a comment and has no effect on the running of the script. The second line gives the script a name, which is useful in debugging as it says which script was running. I've also changed `print` to `log` to get more information from the script. When run, the output is now
54
59
  ```
55
- EasyCoder version 250101.1
60
+ EasyCoder version 250403.1
56
61
  Compiled Test: 3 lines (4 tokens) in 0 ms
57
62
  Run Test
58
- 3-> Hello, world!
63
+ 16:37:39.132311: 3-> Hello, world!
59
64
  ```
60
65
 
61
- As you might guess from the above, the print command shows the line in the script it was called from. This is very useful in tracking down debugging print commands in large scripts.
66
+ As you might guess from the above, the `log` command shows the time and the line in the script it was called from. This is very useful in tracking down debugging print commands in large scripts.
62
67
 
63
68
  Here in the repository is a folder called `scripts` containing some sample scripts:
64
69
 
@@ -66,7 +71,7 @@ Here in the repository is a folder called `scripts` containing some sample scrip
66
71
  `tests.ecs` is a test program containing many of the **_EasyCoder_** features
67
72
  `benchmark.ecs` allows the performance of **_EasyCoder_** to be compared to other languages if a similar script is written for each one.
68
73
 
69
- ## Graphical programmming
74
+ ## Graphical programming
70
75
  **_EasyCoder_** includes a graphical programming environment that is in the early stages of development. Some demo scripts will be included in the `scripts` directory; these can be recognised by the extension`.ecg`. To run them, first install `tkinter`. On Linux this is done with
71
76
  ```
72
77
  sudo apt install python3-tk
@@ -9,4 +9,4 @@ from .ec_program import *
9
9
  from .ec_timestamp import *
10
10
  from .ec_value import *
11
11
 
12
- __version__ = "250403.1"
12
+ __version__ = "250403.2"
@@ -2420,11 +2420,16 @@ class Core(Handler):
2420
2420
 
2421
2421
  if self.getToken() == 'file':
2422
2422
  path = self.nextValue()
2423
- if self.peek() == 'exists':
2424
- condition.type = 'exists'
2425
- condition.path = path
2426
- self.nextToken()
2423
+ condition.path = path
2424
+ condition.type = 'exists'
2425
+ token = self.nextToken()
2426
+ if token == 'exists':
2427
2427
  return condition
2428
+ elif token == 'does':
2429
+ if self.nextIs('not'):
2430
+ if self.nextIs('exist'):
2431
+ condition.negate = not condition.negate
2432
+ return condition
2428
2433
  return None
2429
2434
 
2430
2435
  value = self.getValue()
@@ -10,4 +10,5 @@
10
10
  ! split Text on ` `
11
11
  ! index Text to 2
12
12
  print Text
13
+ if file `test.ecs` does not exist print `Yes`
13
14
  exit
@@ -1,12 +0,0 @@
1
- '''EasyCoder for Python'''
2
-
3
- from .ec_classes import *
4
- from .ec_compiler import *
5
- from .ec_condition import *
6
- from .ec_core import *
7
- from .ec_handler import *
8
- from .ec_program import *
9
- from .ec_timestamp import *
10
- from .ec_value import *
11
-
12
- __version__ = "250302.1"