easycoder 241231.1__tar.gz → 250103.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 (142) hide show
  1. {easycoder-241231.1 → easycoder-250103.1}/PKG-INFO +16 -18
  2. {easycoder-241231.1 → easycoder-250103.1}/README.md +15 -17
  3. easycoder-250103.1/doc/README.md +7 -0
  4. easycoder-250103.1/doc/core/README.md +23 -0
  5. easycoder-250103.1/doc/core/conditions/boolean.md +16 -0
  6. easycoder-250103.1/doc/core/conditions/empty.md +15 -0
  7. easycoder-250103.1/doc/core/conditions/ends.md +15 -0
  8. easycoder-250103.1/doc/core/conditions/even.md +15 -0
  9. easycoder-250103.1/doc/core/conditions/exists.md +15 -0
  10. easycoder-250103.1/doc/core/conditions/greater.md +16 -0
  11. easycoder-250103.1/doc/core/conditions/hasProperty.md +15 -0
  12. easycoder-250103.1/doc/core/conditions/includes.md +15 -0
  13. easycoder-250103.1/doc/core/conditions/is.md +15 -0
  14. easycoder-250103.1/doc/core/conditions/less.md +16 -0
  15. easycoder-250103.1/doc/core/conditions/list.md +15 -0
  16. easycoder-250103.1/doc/core/conditions/none.md +15 -0
  17. easycoder-250103.1/doc/core/conditions/not.md +15 -0
  18. easycoder-250103.1/doc/core/conditions/numeric.md +15 -0
  19. easycoder-250103.1/doc/core/conditions/object.md +15 -0
  20. easycoder-250103.1/doc/core/conditions/odd.md +15 -0
  21. easycoder-250103.1/doc/core/conditions/starts.md +15 -0
  22. easycoder-250103.1/doc/core/conditions/string.md +15 -0
  23. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/add.md +3 -1
  24. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/append.md +3 -1
  25. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/assert.md +3 -1
  26. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/begin.md +3 -1
  27. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/clear.md +3 -1
  28. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/close.md +3 -1
  29. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/create.md +3 -1
  30. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/debug.md +3 -1
  31. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/decrement.md +3 -1
  32. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/delete.md +3 -1
  33. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/divide.md +3 -1
  34. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/exit.md +3 -1
  35. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/file.md +3 -1
  36. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/fork.md +3 -1
  37. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/get.md +4 -2
  38. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/go.md +3 -1
  39. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/gosub.md +3 -1
  40. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/if.md +3 -1
  41. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/import.md +3 -1
  42. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/increment.md +3 -1
  43. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/index.md +3 -1
  44. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/init.md +3 -1
  45. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/input.md +4 -2
  46. easycoder-250103.1/doc/core/keywords/load.md +16 -0
  47. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/multiply.md +5 -3
  48. easycoder-250103.1/doc/core/keywords/negate.md +13 -0
  49. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/open.md +4 -2
  50. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/pop.md +3 -1
  51. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/post.md +3 -1
  52. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/print.md +3 -1
  53. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/push.md +3 -1
  54. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/put.md +3 -1
  55. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/read.md +3 -1
  56. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/replace.md +3 -1
  57. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/return.md +4 -2
  58. easycoder-250103.1/doc/core/keywords/save.md +16 -0
  59. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/script.md +4 -2
  60. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/set.md +10 -4
  61. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/split.md +3 -1
  62. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/stack.md +3 -1
  63. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/stop.md +3 -1
  64. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/system.md +3 -1
  65. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/take.md +3 -1
  66. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/toggle.md +3 -1
  67. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/truncate.md +3 -1
  68. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/variable.md +3 -1
  69. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/wait.md +3 -1
  70. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/while.md +3 -1
  71. {easycoder-241231.1/doc/core → easycoder-250103.1/doc/core/keywords}/write.md +3 -1
  72. easycoder-250103.1/doc/core/values/arg.md +16 -0
  73. easycoder-250103.1/doc/core/values/args.md +15 -0
  74. easycoder-250103.1/doc/core/values/cos.md +16 -0
  75. easycoder-250103.1/doc/core/values/datime.md +17 -0
  76. easycoder-250103.1/doc/core/values/decode.md +15 -0
  77. easycoder-250103.1/doc/core/values/element.md +16 -0
  78. easycoder-250103.1/doc/core/values/elements.md +15 -0
  79. easycoder-250103.1/doc/core/values/empty.md +15 -0
  80. easycoder-250103.1/doc/core/values/encode.md +15 -0
  81. easycoder-250103.1/doc/core/values/error.md +16 -0
  82. easycoder-250103.1/doc/core/values/files.md +15 -0
  83. easycoder-250103.1/doc/core/values/float.md +16 -0
  84. easycoder-250103.1/doc/core/values/from.md +17 -0
  85. easycoder-250103.1/doc/core/values/hash.md +16 -0
  86. easycoder-250103.1/doc/core/values/index.md +19 -0
  87. easycoder-250103.1/doc/core/values/integer.md +15 -0
  88. easycoder-250103.1/doc/core/values/json.md +15 -0
  89. easycoder-250103.1/doc/core/values/keys.md +15 -0
  90. easycoder-250103.1/doc/core/values/left.md +15 -0
  91. easycoder-250103.1/doc/core/values/length.md +15 -0
  92. easycoder-250103.1/doc/core/values/lowercase.md +15 -0
  93. easycoder-250103.1/doc/core/values/memory.md +15 -0
  94. easycoder-250103.1/doc/core/values/modification.md +15 -0
  95. easycoder-250103.1/doc/core/values/modulo.md +15 -0
  96. easycoder-250103.1/doc/core/values/newline.md +15 -0
  97. easycoder-250103.1/doc/core/values/now.md +15 -0
  98. easycoder-250103.1/doc/core/values/position.md +15 -0
  99. easycoder-250103.1/doc/core/values/property.md +15 -0
  100. easycoder-250103.1/doc/core/values/random.md +16 -0
  101. easycoder-250103.1/doc/core/values/right.md +15 -0
  102. easycoder-250103.1/doc/core/values/sin.md +16 -0
  103. easycoder-250103.1/doc/core/values/stringify.md +15 -0
  104. easycoder-250103.1/doc/core/values/tab.md +15 -0
  105. easycoder-250103.1/doc/core/values/tan.md +16 -0
  106. easycoder-250103.1/doc/core/values/timestamp.md +18 -0
  107. easycoder-250103.1/doc/core/values/today.md +15 -0
  108. easycoder-250103.1/doc/core/values/trim.md +15 -0
  109. easycoder-250103.1/doc/core/values/type.md +16 -0
  110. easycoder-250103.1/doc/core/values/uppercase.md +15 -0
  111. easycoder-250103.1/doc/core/values/value.md +15 -0
  112. easycoder-250103.1/doc/core/values/weekday.md +15 -0
  113. easycoder-250103.1/doc/graphics/README.md +21 -0
  114. {easycoder-241231.1 → easycoder-250103.1}/easycoder/__init__.py +1 -1
  115. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_core.py +217 -176
  116. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_program.py +4 -4
  117. {easycoder-241231.1 → easycoder-250103.1}/json/graphics-demo.json +2 -2
  118. {easycoder-241231.1 → easycoder-250103.1}/scripts/graphics-demo.ecg +1 -4
  119. {easycoder-241231.1 → easycoder-250103.1}/scripts/tests.ecs +45 -1
  120. easycoder-241231.1/doc/README.md +0 -20
  121. {easycoder-241231.1 → easycoder-250103.1}/LICENSE +0 -0
  122. {easycoder-241231.1 → easycoder-250103.1}/easycoder/README.md +0 -0
  123. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec.py +0 -0
  124. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_classes.py +0 -0
  125. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_compiler.py +0 -0
  126. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_condition.py +0 -0
  127. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_graphics.py +0 -0
  128. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_handler.py +0 -0
  129. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_renderer.py +0 -0
  130. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_screenspec.py +0 -0
  131. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_timestamp.py +0 -0
  132. {easycoder-241231.1 → easycoder-250103.1}/easycoder/ec_value.py +0 -0
  133. {easycoder-241231.1 → easycoder-250103.1}/images/Semoigo Dawn.jpg +0 -0
  134. {easycoder-241231.1 → easycoder-250103.1}/plugins/ec_p100.py +0 -0
  135. {easycoder-241231.1 → easycoder-250103.1}/plugins/example.py +0 -0
  136. {easycoder-241231.1 → easycoder-250103.1}/pyproject.toml +0 -0
  137. {easycoder-241231.1 → easycoder-250103.1}/scripts/README.md +0 -0
  138. {easycoder-241231.1 → easycoder-250103.1}/scripts/benchmark.ecs +0 -0
  139. {easycoder-241231.1 → easycoder-250103.1}/scripts/fizzbuzz.ecs +0 -0
  140. {easycoder-241231.1 → easycoder-250103.1}/scripts/hello.ecs +0 -0
  141. {easycoder-241231.1 → easycoder-250103.1}/scripts/points.ecs +0 -0
  142. {easycoder-241231.1 → easycoder-250103.1}/scripts/wave.ecg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: easycoder
3
- Version: 241231.1
3
+ Version: 250103.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 @@ Requires-Dist: pytz
10
10
  Project-URL: Home, https://github.com/easycoder/easycoder-py
11
11
 
12
12
  # Introduction
13
- This is the Python version of **_EasyCoder_**, a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line.
13
+ **_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. This version of the language is written in Python and its runtime acts as a fairly thin wrapper around Python functions, giving good performance for general applications.
14
14
 
15
15
  The JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser, is at
16
16
 
@@ -31,7 +31,7 @@ This is traditionally the first program to be written in virtually any language.
31
31
  The output will look like this:
32
32
 
33
33
  ```
34
- EasyCoder version 5
34
+ EasyCoder version 250101.1
35
35
  Compiled <anon>: 1 lines (2 tokens) in 0 ms
36
36
  Run <anon>
37
37
  1-> Hello, world!
@@ -43,28 +43,28 @@ It's conventional to add a program title to a script:
43
43
  script Test
44
44
  print `Hello, world!`
45
45
  ```
46
- 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
46
+ 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
47
47
 
48
48
  ```
49
- EasyCoder version 5
50
- Compiled Test: 5 lines (4 tokens) in 0 ms
49
+ EasyCoder version 250101.1
50
+ Compiled Test: 3 lines (4 tokens) in 0 ms
51
51
  Run Test
52
- 5-> Hello, world!
52
+ 3-> Hello, world!
53
53
  ```
54
- As you can guess from the above, the print command gives the line in the script it was called from. This is very useful in tracking down debugging print commands in large scripts.
54
+ 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.
55
55
 
56
56
  Here in the repository is a folder called `scripts` containing some sample scripts:
57
57
 
58
- `benchmark.ecs` allows the performance of EasyCoder to be compared to other languages if a similar program is written for each one
59
- `tests.ecs` is a test program containing many of the EasyCoder features
60
- `fizzbuzz.ecs` is a simple programming challenge often given at job interviews
58
+ `fizzbuzz.ecs` is a simple programming challenge often given at job interviews
59
+ `tests.ecs` is a test program containing many of the **_EasyCoder_** features
60
+ `benchmark.ecs` allows the performance of **_EasyCoder_** to be compared to other languages if a similar script is written for each one.
61
61
 
62
62
  ## Graphical programmming
63
- **_EasyCoder_** includes a graphical programming environment that is in the early stages of development. A couple of demo scripts are included in the `scripts` directory. To run them, first install the Python `kivy` graphics library if it's not already present on your system. This is done with `pip install kivy`. Then run a script using `easycoder {scriptname}.ecg`.
63
+ **_EasyCoder_** includes a graphical programming environment that is in the early stages of development. A couple of demo scripts are included in the `scripts` directory. To run them, first install the Python `kivy` graphics library if it's not already present on your system. This is done with `pip install kivy`. Then run your **_EasyCoder_** script using `easycoder {scriptname}.ecg`.
64
64
 
65
- Graphical scripts look much like any other script but their file names must use the extension `.ecg` to signal to **_EasyCoder_** that it needs to load the graphics module. This allows the **_EasyCoder_** application to be used wherever Python is installed, in either a command-line or a graphical environment (but graphics will of course not be available in the former).
65
+ Graphical scripts look much like any other script but their file names must use the extension `.ecg` to signal to **_EasyCoder_** that it needs to load the graphics module. Non-graphical applications can use any extension but `.ecs` is recommended. This allows the **_EasyCoder_** application to be used wherever Python is installed, in either a command-line or a graphical environment, but graphics will of course not be available in the former.
66
66
 
67
- A couple of demo scripts are included in the `scripts` directory:
67
+ A couple of demo graphical scripts are included in the `scripts` directory:
68
68
 
69
69
  `graphics-demo.ecg` shows some of the elements that can be created, and demonstrates a variety of the graphical features of the language such as detecting when elements are clicked.
70
70
 
@@ -72,11 +72,9 @@ A couple of demo scripts are included in the `scripts` directory:
72
72
 
73
73
  **_EasyCoder_** graphics are handled by a library module, `ec_renderer` that can be used outside of the **_EasyCoder_** environment, in other Python programs.
74
74
 
75
- ## EasyCoder programming reference
75
+ ## Programming reference
76
76
 
77
- The language comprises a general-purpose core package, which can be enhanced by plugins to provide special features on demand.
78
-
79
- [The core package](doc/README.md)
77
+ **_EasyCoder_** comprises a set of modules to handle tokenisation, compilation and runtime control. Syntax and grammar are defined by [packages](doc/README.md), of which there are currently two; the [core](doc/core/README.md) package, which implements a comprehensive set of command-line programming features, and and the [graphics](doc/graphics/README.md) package, which adds graphical features in a windowing environment.
80
78
 
81
79
  ## Extending the language
82
80
 
@@ -1,5 +1,5 @@
1
1
  # Introduction
2
- This is the Python version of **_EasyCoder_**, a high-level English-like scripting language suited for prototyping and rapid testing of ideas. It operates on the command line.
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. This version of the language is written in Python and its runtime acts as a fairly thin wrapper around Python functions, giving good performance for general applications.
3
3
 
4
4
  The JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser, is at
5
5
 
@@ -20,7 +20,7 @@ This is traditionally the first program to be written in virtually any language.
20
20
  The output will look like this:
21
21
 
22
22
  ```
23
- EasyCoder version 5
23
+ EasyCoder version 250101.1
24
24
  Compiled <anon>: 1 lines (2 tokens) in 0 ms
25
25
  Run <anon>
26
26
  1-> Hello, world!
@@ -32,28 +32,28 @@ It's conventional to add a program title to a script:
32
32
  script Test
33
33
  print `Hello, world!`
34
34
  ```
35
- 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
35
+ 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
36
36
 
37
37
  ```
38
- EasyCoder version 5
39
- Compiled Test: 5 lines (4 tokens) in 0 ms
38
+ EasyCoder version 250101.1
39
+ Compiled Test: 3 lines (4 tokens) in 0 ms
40
40
  Run Test
41
- 5-> Hello, world!
41
+ 3-> Hello, world!
42
42
  ```
43
- As you can guess from the above, the print command gives the line in the script it was called from. This is very useful in tracking down debugging print commands in large scripts.
43
+ 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.
44
44
 
45
45
  Here in the repository is a folder called `scripts` containing some sample scripts:
46
46
 
47
- `benchmark.ecs` allows the performance of EasyCoder to be compared to other languages if a similar program is written for each one
48
- `tests.ecs` is a test program containing many of the EasyCoder features
49
- `fizzbuzz.ecs` is a simple programming challenge often given at job interviews
47
+ `fizzbuzz.ecs` is a simple programming challenge often given at job interviews
48
+ `tests.ecs` is a test program containing many of the **_EasyCoder_** features
49
+ `benchmark.ecs` allows the performance of **_EasyCoder_** to be compared to other languages if a similar script is written for each one.
50
50
 
51
51
  ## Graphical programmming
52
- **_EasyCoder_** includes a graphical programming environment that is in the early stages of development. A couple of demo scripts are included in the `scripts` directory. To run them, first install the Python `kivy` graphics library if it's not already present on your system. This is done with `pip install kivy`. Then run a script using `easycoder {scriptname}.ecg`.
52
+ **_EasyCoder_** includes a graphical programming environment that is in the early stages of development. A couple of demo scripts are included in the `scripts` directory. To run them, first install the Python `kivy` graphics library if it's not already present on your system. This is done with `pip install kivy`. Then run your **_EasyCoder_** script using `easycoder {scriptname}.ecg`.
53
53
 
54
- Graphical scripts look much like any other script but their file names must use the extension `.ecg` to signal to **_EasyCoder_** that it needs to load the graphics module. This allows the **_EasyCoder_** application to be used wherever Python is installed, in either a command-line or a graphical environment (but graphics will of course not be available in the former).
54
+ Graphical scripts look much like any other script but their file names must use the extension `.ecg` to signal to **_EasyCoder_** that it needs to load the graphics module. Non-graphical applications can use any extension but `.ecs` is recommended. This allows the **_EasyCoder_** application to be used wherever Python is installed, in either a command-line or a graphical environment, but graphics will of course not be available in the former.
55
55
 
56
- A couple of demo scripts are included in the `scripts` directory:
56
+ A couple of demo graphical scripts are included in the `scripts` directory:
57
57
 
58
58
  `graphics-demo.ecg` shows some of the elements that can be created, and demonstrates a variety of the graphical features of the language such as detecting when elements are clicked.
59
59
 
@@ -61,11 +61,9 @@ A couple of demo scripts are included in the `scripts` directory:
61
61
 
62
62
  **_EasyCoder_** graphics are handled by a library module, `ec_renderer` that can be used outside of the **_EasyCoder_** environment, in other Python programs.
63
63
 
64
- ## EasyCoder programming reference
64
+ ## Programming reference
65
65
 
66
- The language comprises a general-purpose core package, which can be enhanced by plugins to provide special features on demand.
67
-
68
- [The core package](doc/README.md)
66
+ **_EasyCoder_** comprises a set of modules to handle tokenisation, compilation and runtime control. Syntax and grammar are defined by [packages](doc/README.md), of which there are currently two; the [core](doc/core/README.md) package, which implements a comprehensive set of command-line programming features, and and the [graphics](doc/graphics/README.md) package, which adds graphical features in a windowing environment.
69
67
 
70
68
  ## Extending the language
71
69
 
@@ -0,0 +1,7 @@
1
+ # _EasyCoder_ packages
2
+
3
+ 'Packages' are components of the **_EasyCoder_** system that deal with specific groups of language features. Those included or available from the repository are
4
+
5
+ [core](core/README.md) contains all the language features needed to construct command-line applications to run on any computer equipped with Python.
6
+
7
+ [graphics](graphics/README.md) contains a growing selection of graphical language features, to construct applications that will run on a computer with a graphical user interface; Windows, Mac or Linux.
@@ -0,0 +1,23 @@
1
+ # The 'core' package
2
+
3
+ The core package contains all the keywords values and conditionals needed for general programming, and to build most command-line tools these are all that will be needed.
4
+
5
+ There are three primary components to the language:
6
+
7
+ - Keywords
8
+ - Values
9
+ - Conditions
10
+
11
+ The core keywords are:
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) [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) [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) [variable](keywords/variable.md) [wait](keywords/wait.md) [while](keywords/while.md) [write](keywords/write.md)
14
+
15
+ The core values are:
16
+
17
+ [arg](values/arg.md) [args](values/args.md) [cos](values/cos.md) [count](values/count.md) [datime/datetime](values/datime.md) [decode](values/decode.md) [element](values/element.md) [elements](values/elements.md) [empty](values/empty.md) [encode](values/encode.md) [error](values/error.md) [files](values/files.md) [float](values/float.md) [from](values/from.md) [hash](values/hash.md) [index](values/index.md) [integer](values/integer.md) [json](values/json.md) [keys](values/keys.md) [left](values/left.md) [length](values/length.md) [lowercase](values/lowercase.md) [mem/memory](values/mem.md) [modification](values/modification.md) [message](values/message.md) [newline](values/newline.md) [now](values/now.md) [position](values/position.md) [property](values/property.md) [random](values/random.md) [right](values/right.md) [sin](values/sin.md) [stringify](values/stringify.md) [tab](values/tab.md) [tan](values/tan.md) [timestamp](values/timestamp.md) [today](values/today.md) [trim](values/trim.md) [type](values/type.md) [uppercase](values/uppercase.md) [value](values/value.md) [weekday](values/weekday.md)
18
+
19
+ The core conditions are:
20
+
21
+ [boolean](conditions/boolean.md) [empty](conditions/empty.md) [ends](conditions/ends.md) [even](conditions/even.md) [exists](conditions/exists.md) [greater](conditions/greater.md) [has property](conditions/hasProperty.md) [includes](conditions/includes.md) [is](conditions/is.md) [less](conditions/less.md) [list](conditions/list.md) [numeric](conditions/numeric.md) [none](conditions/none.md) [not](conditions/not.md) [object](conditions/object.md) [odd](conditions/odd.md) [starts](conditions/starts.md) [string](conditions/string.md)
22
+
23
+ [Back](../README.md)
@@ -0,0 +1,16 @@
1
+ # boolean
2
+
3
+ ## Syntax:
4
+ `{value} is [not] boolean`
5
+
6
+ ## Examples:
7
+ `if MyVariable is boolean stop`
8
+ ``if `true` is boolean stop` ``
9
+
10
+ ## Description:
11
+ Tests if the given value is boolean. The inclusion of `[not]` negates the test.
12
+
13
+ Next: [empty](empty.md)
14
+ Prev: [string](string.md)
15
+
16
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # empty
2
+
3
+ ## Syntax:
4
+ `{value} is [not] empty`
5
+
6
+ ## Examples:
7
+ `if MyVariable is empty stop`
8
+
9
+ ## Description:
10
+ Tests if the given value is an empty string. The inclusion of `[not]` negates the test.
11
+
12
+ Next: [ends](ends.md)
13
+ Prev: [boolean](boolean.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # ends
2
+
3
+ ## Syntax:
4
+ `{value} ends with {text}`
5
+
6
+ ## Examples:
7
+ ``if MyVariable ends with `#` stop` ``
8
+
9
+ ## Description:
10
+ Tests if the given value ends with a given string.
11
+
12
+ Next: [even](even.md)
13
+ Prev: [empty](empty.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # even
2
+
3
+ ## Syntax:
4
+ `{value} ends with {text}`
5
+
6
+ ## Examples:
7
+ ``if MyVariable ends with `#` stop` ``
8
+
9
+ ## Description:
10
+ Tests if the given number is even. The inclusion of `[not]` negates the test, or you can use [odd](odd.md).
11
+
12
+ Next: [exists](exists.md)
13
+ Prev: [ends](ends.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # exists
2
+
3
+ ## Syntax:
4
+ `{file path} exists`
5
+
6
+ ## Examples:
7
+ `if MyFile exists stop`
8
+
9
+ ## Description:
10
+ Tests if the named file exists.
11
+
12
+ Next: [greater](greater.md)
13
+ Prev: [even](even.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,16 @@
1
+ # greater
2
+
3
+ ## Syntax:
4
+ `{value} is [not] greater than {other value}`
5
+
6
+ ## Examples:
7
+ `if 10 is greater than 5 stop`
8
+ `if Value is not greater than 100 stop`
9
+
10
+ ## Description:
11
+ Tests if the value is greater than the second value. The inclusion of `[not]` negates the test.
12
+
13
+ Next: [has property](hasProperty.md)
14
+ Prev: [exists](exists.md)
15
+
16
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # has property
2
+
3
+ ## Syntax:
4
+ `{value} has property {property}`
5
+
6
+ ## Examples:
7
+ ``if Users has property `Andrew` stop` ``
8
+
9
+ ## Description:
10
+ Tests if the value - usually a variable - has the named property as one of its attributes.
11
+
12
+ Next: [includes](includes.md)
13
+ Prev: [greater](greater.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # includes
2
+
3
+ ## Syntax:
4
+ `{value} includes {element}`
5
+
6
+ ## Examples:
7
+ ``if Animals includes `cat` stop` ``
8
+
9
+ ## Description:
10
+ Tests if the array - usually a variable - has the named element as one of its members.
11
+
12
+ Next: [is](is.md)
13
+ Prev: [has property](hasProperty.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # is
2
+
3
+ ## Syntax:
4
+ `{value} is {second value}`
5
+
6
+ ## Examples:
7
+ ``if Animal is `cat` stop` ``
8
+
9
+ ## Description:
10
+ Tests if the value is identical to the second value.
11
+
12
+ Next: [less](less.md)
13
+ Prev: [includes](includes.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,16 @@
1
+ # less
2
+
3
+ ## Syntax:
4
+ `{value} is [not] less than {other value}`
5
+
6
+ ## Examples:
7
+ `if 10 is less than 5 stop`
8
+ `if Value is not less than 100 stop`
9
+
10
+ ## Description:
11
+ Tests if the value is less than the second value. The inclusion of `[not]` negates the test.
12
+
13
+ Next: [list](less.md)
14
+ Prev: [is](is.md)
15
+
16
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # list
2
+
3
+ ## Syntax:
4
+ `{value} is [not] list`
5
+
6
+ ## Examples:
7
+ `if MyData is not list stop`
8
+
9
+ ## Description:
10
+ Tests if the value is a list. The inclusion of `[not]` negates the test.
11
+
12
+ Next: [numeric](numeric.md)
13
+ Prev: [less](less.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # none
2
+
3
+ ## Syntax:
4
+ `{value} is [not] none`
5
+
6
+ ## Examples:
7
+ `if MyData is not none stop`
8
+
9
+ ## Description:
10
+ Tests if the value has the Python value `None`. The inclusion of `[not]` negates the test.
11
+
12
+ Next: [not](not.md)
13
+ Prev: [numeric](list.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # not
2
+
3
+ ## Syntax:
4
+ `{value} is not {second value}`
5
+
6
+ ## Examples:
7
+ `if Value is not 100 stop`
8
+
9
+ ## Description:
10
+ Tests if the value is not the same as the second value.
11
+
12
+ Next: [object](obect.md)
13
+ Prev: [none](none.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # numeric
2
+
3
+ ## Syntax:
4
+ `{value} is [not] numeric`
5
+
6
+ ## Examples:
7
+ `if MyData is not numeric stop`
8
+
9
+ ## Description:
10
+ Tests if the value is a numeric value. The inclusion of `[not]` negates the test.
11
+
12
+ Next: [none](none.md)
13
+ Prev: [list](list.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # object
2
+
3
+ ## Syntax:
4
+ `{value} is [not] object`
5
+
6
+ ## Examples:
7
+ `if Value is object stop`
8
+
9
+ ## Description:
10
+ Tests if the value is an object. The inclusion of `[not]` negates the test.
11
+
12
+ Next: [odd](odd.md)
13
+ Prev: [not](not.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # odd
2
+
3
+ ## Syntax:
4
+ `{value} is [not] odd`
5
+
6
+ ## Examples:
7
+ `if Value is odd stop`
8
+
9
+ ## Description:
10
+ Tests if the value is an odd number. The inclusion of `[not]` negates the test, or you can use [even](even.md).
11
+
12
+ Next: [starts](starts.md)
13
+ Prev: [object](object.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # starts
2
+
3
+ ## Syntax:
4
+ `{value} starts with {text}`
5
+
6
+ ## Examples:
7
+ ``if Value starts with `!` stop` ``
8
+
9
+ ## Description:
10
+ Tests if the value starts with the given text.
11
+
12
+ Next: [string](string.md)
13
+ Prev: [odd](odd.md)
14
+
15
+ [Back](../../README.md)
@@ -0,0 +1,15 @@
1
+ # string
2
+
3
+ ## Syntax:
4
+ `{value} is [not] string`
5
+
6
+ ## Examples:
7
+ `if Value is string stop`
8
+
9
+ ## Description:
10
+ Tests if the value is a text string.
11
+
12
+ Next: [boolean](boolean.md)
13
+ Prev: [starts](starts.md)
14
+
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ ## add
2
+
1
3
  ## Syntax:
2
4
  `add {value} to {variable}`
3
5
  `add {value} to {value} giving {variable}`
@@ -10,4 +12,4 @@ Adds a numeric value to a numeric variable or adds two values and puts the resul
10
12
  Next: [append](append.md)
11
13
  Prev: [write](write.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # append
2
+
1
3
  ## Syntax:
2
4
  `append {value} to {array}`
3
5
  ## Examples:
@@ -10,4 +12,4 @@ Appends an item to a JSON array, which is is a string value held in a single var
10
12
  Next: [assert](assert.md)
11
13
  Prev: [add](add.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # assert
2
+
1
3
  ## Syntax:
2
4
  `assert {condition}`
3
5
  ## Examples:
@@ -8,4 +10,4 @@ Tests the condition and throws an exception if it is not true.
8
10
  Next: [begin](begin.md)
9
11
  Prev: [append](append.md)
10
12
 
11
- [Back](../README.md)
13
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # begin
2
+
1
3
  ## Syntax:
2
4
  `begin ... end`
3
5
  ## Examples:
@@ -12,4 +14,4 @@
12
14
  Next: [clear](clear.md)
13
15
  Prev: [assert](assert.md)
14
16
 
15
- [Back](../README.md)
17
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # clear
2
+
1
3
  ## Syntax:
2
4
  `clear {variable}`
3
5
 
@@ -10,4 +12,4 @@
10
12
  Next: [close](close.md)
11
13
  Prev: [begin](begin.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # close
2
+
1
3
  ## Syntax:
2
4
  `close {file}`
3
5
  ## Examples:
@@ -8,4 +10,4 @@ Close the file identified by the `{file}` variable. See `file`, `open`, `read` a
8
10
  Next: [create](create.md)
9
11
  Prev: [clear](clear.md)
10
12
 
11
- [Back](../README.md)
13
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # create
2
+
1
3
  ## Syntax:
2
4
  `create directory {name}`
3
5
  ## Examples:
@@ -8,4 +10,4 @@ Create a directory, giving the full path in `{name}`.
8
10
  Next: [debug](debug.md)
9
11
  Prev: [close](close.md)
10
12
 
11
- [Back](../README.md)
13
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # debug
2
+
1
3
  ## Syntax:
2
4
  `debug step/stop/program`
3
5
  ## Examples:
@@ -13,4 +15,4 @@ Set up a debug option.
13
15
  Next: [decrement](decrement.md)
14
16
  Prev: [create](create.md)
15
17
 
16
- [Back](../README.md)
18
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # decrement
2
+
1
3
  ## Syntax:
2
4
  `decrement {variable}`
3
5
  ## Examples:
@@ -8,4 +10,4 @@ Decrements the value of the variable by 1. See also [increment](increment.md)
8
10
  Next: [delete](delete.md)
9
11
  Prev: [debug](debug.md)
10
12
 
11
- [Back](../README.md)
13
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # delete
2
+
1
3
  ## Syntax:
2
4
  `delete {filename}`
3
5
  `delete property {value} of {variable}`
@@ -13,4 +15,4 @@ The second form deletes a named property of an object. See also [set property](s
13
15
  Next: [divide](divide.md)
14
16
  Prev: [decrement](decrement.md)
15
17
 
16
- [Back](../README.md)
18
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # divide
2
+
1
3
  ## Syntax:
2
4
  `divide {value} by {variable}`
3
5
  `divide {value} by {value} giving {variable}`
@@ -11,4 +13,4 @@ Divides a numeric variable by a numeric value or divides one value by another an
11
13
  Next: [exit](exit.md)
12
14
  Prev: [delete](delete.md)
13
15
 
14
- [Back](../README.md)
16
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # exit
2
+
1
3
  ## Syntax:
2
4
  `exit`
3
5
  ## Examples:
@@ -8,4 +10,4 @@ Terminate the program.
8
10
  Next: [file](file.md)
9
11
  Prev: [divide](divide.md)
10
12
 
11
- [Back](../README.md)
13
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # file
2
+
1
3
  ## Syntax:
2
4
  `file {name}`
3
5
  ## Example:
@@ -11,4 +13,4 @@ Declare a file variable. See [open](open.md), [read](read.md), [write](write.md)
11
13
  Next: [fork](fork.md)
12
14
  Prev: [exit](exit.md)
13
15
 
14
- [Back](../README.md)
16
+ [Back](../../README.md)