easycoder 241227.1__tar.gz → 250102.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 (124) hide show
  1. easycoder-250102.1/PKG-INFO +84 -0
  2. easycoder-250102.1/README.md +72 -0
  3. easycoder-250102.1/doc/README.md +7 -0
  4. easycoder-250102.1/doc/core/README.md +21 -0
  5. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/add.md +3 -1
  6. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/append.md +3 -1
  7. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/assert.md +3 -1
  8. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/begin.md +3 -1
  9. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/clear.md +3 -1
  10. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/close.md +3 -1
  11. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/create.md +3 -1
  12. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/debug.md +3 -1
  13. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/decrement.md +3 -1
  14. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/delete.md +3 -1
  15. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/divide.md +3 -1
  16. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/exit.md +3 -1
  17. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/file.md +3 -1
  18. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/fork.md +3 -1
  19. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/get.md +4 -2
  20. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/go.md +3 -1
  21. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/gosub.md +3 -1
  22. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/if.md +3 -1
  23. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/import.md +3 -1
  24. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/increment.md +3 -1
  25. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/index.md +3 -1
  26. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/init.md +3 -1
  27. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/input.md +3 -1
  28. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/multiply.md +4 -2
  29. easycoder-250102.1/doc/core/keywords/negate.md +13 -0
  30. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/open.md +4 -2
  31. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/pop.md +3 -1
  32. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/post.md +3 -1
  33. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/print.md +3 -1
  34. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/push.md +3 -1
  35. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/put.md +3 -1
  36. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/read.md +3 -1
  37. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/replace.md +3 -1
  38. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/return.md +3 -1
  39. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/script.md +3 -1
  40. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/set.md +10 -4
  41. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/split.md +3 -1
  42. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/stack.md +3 -1
  43. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/stop.md +3 -1
  44. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/system.md +3 -1
  45. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/take.md +3 -1
  46. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/toggle.md +3 -1
  47. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/truncate.md +3 -1
  48. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/variable.md +3 -1
  49. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/wait.md +3 -1
  50. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/while.md +3 -1
  51. {easycoder-241227.1/doc/core → easycoder-250102.1/doc/core/keywords}/write.md +3 -1
  52. easycoder-250102.1/doc/core/values/arg.md +16 -0
  53. easycoder-250102.1/doc/core/values/args.md +15 -0
  54. easycoder-250102.1/doc/core/values/cos.md +16 -0
  55. easycoder-250102.1/doc/core/values/datime.md +17 -0
  56. easycoder-250102.1/doc/core/values/decode.md +15 -0
  57. easycoder-250102.1/doc/core/values/element.md +16 -0
  58. easycoder-250102.1/doc/core/values/elements.md +15 -0
  59. easycoder-250102.1/doc/core/values/empty.md +15 -0
  60. easycoder-250102.1/doc/core/values/encode.md +15 -0
  61. easycoder-250102.1/doc/core/values/error.md +16 -0
  62. easycoder-250102.1/doc/core/values/files.md +15 -0
  63. easycoder-250102.1/doc/core/values/float.md +16 -0
  64. easycoder-250102.1/doc/core/values/from.md +17 -0
  65. easycoder-250102.1/doc/core/values/hash.md +16 -0
  66. easycoder-250102.1/doc/core/values/index.md +19 -0
  67. easycoder-250102.1/doc/core/values/integer.md +15 -0
  68. easycoder-250102.1/doc/core/values/json.md +15 -0
  69. easycoder-250102.1/doc/core/values/keys.md +15 -0
  70. easycoder-250102.1/doc/core/values/left.md +15 -0
  71. easycoder-250102.1/doc/core/values/length.md +15 -0
  72. easycoder-250102.1/doc/core/values/lowercase.md +15 -0
  73. easycoder-250102.1/doc/core/values/memory.md +15 -0
  74. easycoder-250102.1/doc/core/values/modification.md +15 -0
  75. easycoder-250102.1/doc/core/values/modulo.md +15 -0
  76. easycoder-250102.1/doc/core/values/newline.md +15 -0
  77. easycoder-250102.1/doc/core/values/now.md +15 -0
  78. easycoder-250102.1/doc/core/values/position.md +15 -0
  79. easycoder-250102.1/doc/core/values/property.md +15 -0
  80. easycoder-250102.1/doc/core/values/random.md +16 -0
  81. easycoder-250102.1/doc/core/values/right.md +15 -0
  82. easycoder-250102.1/doc/core/values/sin.md +16 -0
  83. easycoder-250102.1/doc/core/values/stringify.md +15 -0
  84. easycoder-250102.1/doc/core/values/tab.md +15 -0
  85. easycoder-250102.1/doc/core/values/tan.md +16 -0
  86. easycoder-250102.1/doc/core/values/timestamp.md +18 -0
  87. easycoder-250102.1/doc/core/values/today.md +15 -0
  88. easycoder-250102.1/doc/core/values/trim.md +15 -0
  89. easycoder-250102.1/doc/core/values/type.md +16 -0
  90. easycoder-250102.1/doc/core/values/uppercase.md +15 -0
  91. easycoder-250102.1/doc/core/values/value.md +15 -0
  92. easycoder-250102.1/doc/core/values/weekday.md +15 -0
  93. easycoder-250102.1/doc/graphics/README.md +21 -0
  94. easycoder-250102.1/easycoder/README.md +6 -0
  95. {easycoder-241227.1 → easycoder-250102.1}/easycoder/__init__.py +1 -1
  96. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_core.py +191 -127
  97. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_graphics.py +93 -35
  98. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_program.py +50 -34
  99. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_renderer.py +78 -18
  100. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_screenspec.py +0 -1
  101. {easycoder-241227.1 → easycoder-250102.1}/json/graphics-demo.json +12 -13
  102. easycoder-250102.1/scripts/README.md +16 -0
  103. {easycoder-241227.1 → easycoder-250102.1}/scripts/tests.ecs +45 -1
  104. easycoder-250102.1/scripts/wave.ecg +118 -0
  105. easycoder-241227.1/PKG-INFO +0 -78
  106. easycoder-241227.1/README.md +0 -66
  107. easycoder-241227.1/doc/README.md +0 -20
  108. {easycoder-241227.1 → easycoder-250102.1}/LICENSE +0 -0
  109. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec.py +0 -0
  110. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_classes.py +0 -0
  111. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_compiler.py +0 -0
  112. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_condition.py +0 -0
  113. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_handler.py +0 -0
  114. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_timestamp.py +0 -0
  115. {easycoder-241227.1 → easycoder-250102.1}/easycoder/ec_value.py +0 -0
  116. {easycoder-241227.1 → easycoder-250102.1}/images/Semoigo Dawn.jpg +0 -0
  117. {easycoder-241227.1 → easycoder-250102.1}/plugins/ec_p100.py +0 -0
  118. {easycoder-241227.1 → easycoder-250102.1}/plugins/example.py +0 -0
  119. {easycoder-241227.1 → easycoder-250102.1}/pyproject.toml +0 -0
  120. {easycoder-241227.1 → easycoder-250102.1}/scripts/benchmark.ecs +0 -0
  121. {easycoder-241227.1 → easycoder-250102.1}/scripts/fizzbuzz.ecs +0 -0
  122. {easycoder-241227.1 → easycoder-250102.1}/scripts/graphics-demo.ecg +0 -0
  123. {easycoder-241227.1 → easycoder-250102.1}/scripts/hello.ecs +0 -0
  124. {easycoder-241227.1 → easycoder-250102.1}/scripts/points.ecs +0 -0
@@ -0,0 +1,84 @@
1
+ Metadata-Version: 2.3
2
+ Name: easycoder
3
+ Version: 250102.1
4
+ Summary: Rapid scripting in English
5
+ Keywords: compiler,scripting,prototyping,programming,coding,python,low code,hypertalk,computer language,learn to code
6
+ Author-email: Graham Trott <gtanyware@gmail.com>
7
+ Description-Content-Type: text/markdown
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Requires-Dist: pytz
10
+ Project-URL: Home, https://github.com/easycoder/easycoder-py
11
+
12
+ # Introduction
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
+
15
+ The JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser, is at
16
+
17
+ Repository: [https://github.com/easycoder/easycoder.github.io](https://github.com/easycoder/easycoder.github.io)
18
+ Website: [https://easycoder.github.io](https://easycoder.github.io)
19
+
20
+ ## Quick Start
21
+ Install **_EasyCoder_** in your Python environment:
22
+ ```
23
+ pip install easycoder
24
+ ```
25
+ Write a test script, 'hello.ecs', containing the following:
26
+ ```
27
+ print `Hello, world!`
28
+ ```
29
+ This is traditionally the first program to be written in virtually any language. To run it, use `easycoder hello.ecs`.
30
+
31
+ The output will look like this:
32
+
33
+ ```
34
+ EasyCoder version 250101.1
35
+ Compiled <anon>: 1 lines (2 tokens) in 0 ms
36
+ Run <anon>
37
+ 1-> Hello, world!
38
+ ```
39
+ It's conventional to add a program title to a script:
40
+
41
+ ```
42
+ ! Test script
43
+ script Test
44
+ print `Hello, world!`
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
47
+
48
+ ```
49
+ EasyCoder version 250101.1
50
+ Compiled Test: 3 lines (4 tokens) in 0 ms
51
+ Run Test
52
+ 3-> Hello, world!
53
+ ```
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
+
56
+ Here in the repository is a folder called `scripts` containing some sample scripts:
57
+
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
+
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 your **_EasyCoder_** script using `easycoder {scriptname}.ecg`.
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. 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
+
67
+ A couple of demo graphical scripts are included in the `scripts` directory:
68
+
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
+
71
+ `wave.ecg` is a "Mexican Wave" simulation.
72
+
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
+
75
+ ## Programming reference
76
+
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.
78
+
79
+ ## Extending the language
80
+
81
+ **_EasyCoder_** can be extended to add new functionality with the use of 'plugins'. These contain compiler and runtime modules for the added language features. **_EasyCoder_** can use the added keywords, values and conditions freely; the effect is completely seamless. There is an outline example in the `plugins` directory called `example.py`, which comprises a module called `Points` with new language syntax to deal with two-valued items such as coordinates. In the `scripts` directory there is `points.ecs`, which exercises the new functionality.
82
+
83
+ A plugin can act as a wrapper around any Python functionality that has a sensible API, thereby hiding its complexity. The only challenge is to devise an unambiguous syntax that doesn't clash with anything already existing in **_EasyCoder_**.
84
+
@@ -0,0 +1,72 @@
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. 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
+
4
+ The JavaScript version of **_EasyCoder_**, which provides a full set of graphical features to run in a browser, is at
5
+
6
+ Repository: [https://github.com/easycoder/easycoder.github.io](https://github.com/easycoder/easycoder.github.io)
7
+ Website: [https://easycoder.github.io](https://easycoder.github.io)
8
+
9
+ ## Quick Start
10
+ Install **_EasyCoder_** in your Python environment:
11
+ ```
12
+ pip install easycoder
13
+ ```
14
+ Write a test script, 'hello.ecs', containing the following:
15
+ ```
16
+ print `Hello, world!`
17
+ ```
18
+ This is traditionally the first program to be written in virtually any language. To run it, use `easycoder hello.ecs`.
19
+
20
+ The output will look like this:
21
+
22
+ ```
23
+ EasyCoder version 250101.1
24
+ Compiled <anon>: 1 lines (2 tokens) in 0 ms
25
+ Run <anon>
26
+ 1-> Hello, world!
27
+ ```
28
+ It's conventional to add a program title to a script:
29
+
30
+ ```
31
+ ! Test script
32
+ script Test
33
+ print `Hello, world!`
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
36
+
37
+ ```
38
+ EasyCoder version 250101.1
39
+ Compiled Test: 3 lines (4 tokens) in 0 ms
40
+ Run Test
41
+ 3-> Hello, world!
42
+ ```
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
+
45
+ Here in the repository is a folder called `scripts` containing some sample scripts:
46
+
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
+
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 your **_EasyCoder_** script using `easycoder {scriptname}.ecg`.
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. 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
+
56
+ A couple of demo graphical scripts are included in the `scripts` directory:
57
+
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
+
60
+ `wave.ecg` is a "Mexican Wave" simulation.
61
+
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
+
64
+ ## Programming reference
65
+
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.
67
+
68
+ ## Extending the language
69
+
70
+ **_EasyCoder_** can be extended to add new functionality with the use of 'plugins'. These contain compiler and runtime modules for the added language features. **_EasyCoder_** can use the added keywords, values and conditions freely; the effect is completely seamless. There is an outline example in the `plugins` directory called `example.py`, which comprises a module called `Points` with new language syntax to deal with two-valued items such as coordinates. In the `scripts` directory there is `points.ecs`, which exercises the new functionality.
71
+
72
+ A plugin can act as a wrapper around any Python functionality that has a sensible API, thereby hiding its complexity. The only challenge is to devise an unambiguous syntax that doesn't clash with anything already existing in **_EasyCoder_**.
@@ -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,21 @@
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) [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) [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
+ [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)
@@ -1,3 +1,5 @@
1
+ # fork
2
+
1
3
  ## Syntax:
2
4
  `fork to {label}`
3
5
  ## Examples:
@@ -10,4 +12,4 @@ When `fork` is used, the forked commands run until they reach a [stop](stop.md)
10
12
  Next: [get](get.md)
11
13
  Prev: [exit](exit.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # get
2
+
1
3
  ## Syntax:
2
4
  `get {variable from {url} [or {command}]}`
3
5
 
@@ -9,7 +11,7 @@
9
11
  ## Description:
10
12
  Perform an HTTP GET to request data. In the second example, if the request fails some appropriate action can be taken.
11
13
 
12
- Next: [gosub](gosub.md)
14
+ Next: [go](go.md)
13
15
  Prev: [fork](fork.md)
14
16
 
15
- [Back](../README.md)
17
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # go
2
+
1
3
  ## Syntax:
2
4
  `go [to] {label}`
3
5
  `goto {label}`
@@ -10,4 +12,4 @@
10
12
  Next: [gosub](gosub.md)
11
13
  Prev: [get](get.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # gosub
2
+
1
3
  ## Syntax:
2
4
  `gosub [to] {label}`
3
5
  ## Examples:
@@ -9,4 +11,4 @@
9
11
  Next: [if](if.md)
10
12
  Prev: [go](go.md)
11
13
 
12
- [Back](../README.md)
14
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # if
2
+
1
3
  ## Syntax:
2
4
  `if {condition} {true-outcome} [else {false-outcome}]`
3
5
 
@@ -11,4 +13,4 @@
11
13
  Next: [import](import.md)
12
14
  Prev: [gosub](gosub.md)
13
15
 
14
- [Back](../README.md)
16
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # import
2
+
1
3
  ## Syntax:
2
4
  `import {classname} from {path}`
3
5
 
@@ -10,4 +12,4 @@ As with [script](script.md), `import` is a compiler directive that should be pla
10
12
  Next: [increment](increment.md)
11
13
  Prev: [if](if.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # increment
2
+
1
3
  ## Syntax:
2
4
  `increment {variable}`
3
5
 
@@ -10,4 +12,4 @@ Add 1 to the value of the variable. See also [decrement](decrement.md).
10
12
  Next: [index](index.md)
11
13
  Prev: [import](import.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # index
2
+
1
3
  ## Syntax:
2
4
  `index {variable} to {value}`
3
5
 
@@ -12,4 +14,4 @@
12
14
  Next: [init](init.md)
13
15
  Prev: [increment](increment.md)
14
16
 
15
- [Back](../README.md)
17
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # init
2
+
1
3
  ## Syntax:
2
4
  `init {stack}`
3
5
 
@@ -11,4 +13,4 @@
11
13
  Next: [input](input.md)
12
14
  Prev: [index](index.md)
13
15
 
14
- [Back](../README.md)
16
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # input
2
+
1
3
  ## Syntax:
2
4
  `input {variable} [with {prompt}]`
3
5
  ## Examples:
@@ -10,4 +12,4 @@
10
12
  Next: [multiply](multiply.md)
11
13
  Prev: [init](init.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # multiply
2
+
1
3
  ## Syntax:
2
4
  `multiply {value} by {variable}`
3
5
  `multiply {value} by {value} giving {variable}`
@@ -8,7 +10,7 @@
8
10
  ## Description:
9
11
  Multiplies a numeric variable by a numeric value or multiplies one value by another and puts the result into a variable. See elsewhere in this documentation for an explanation of what is meant by a value. If you multiply a variable it must already hold a numeric value, and if you assign a variable to hold the result of a multiplication it will lose whatever value it previously held.
10
12
 
11
- Next: [open](open.md)
13
+ Next: [negate](negate.md)
12
14
  Prev: [input](input.md)
13
15
 
14
- [Back](../README.md)
16
+ [Back](../../README.md)
@@ -0,0 +1,13 @@
1
+ # negate
2
+
3
+ ## Syntax:
4
+ `negate {variable}`
5
+ ## Examples:
6
+ `negate N`
7
+ ## Description:
8
+ Negates a numeric variable (multiplies its value by -1).
9
+
10
+ Next: [open](open.md)
11
+ Prev: [multiply](multiply.md)
12
+
13
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # open
2
+
1
3
  ## Syntax:
2
4
  `open {file} {path} for reading/writing/appending`
3
5
  ## Example:
@@ -20,6 +22,6 @@
20
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.
21
23
 
22
24
  Next: [pop](pop.md)
23
- Prev: [multiply](multiply.md)
25
+ Prev: [negate](negate.md)
24
26
 
25
- [Back](../README.md)
27
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # pop
2
+
1
3
  ## Syntax:
2
4
  `pop {variable} from {stack}`
3
5
  ## Examples:
@@ -9,4 +11,4 @@ Pops the top value from the specified [stack](stack.md).
9
11
  Next: [post](post.md)
10
12
  Prev: [open](open.md)
11
13
 
12
- [Back](../README.md)
14
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # post
2
+
1
3
  ## Syntax:
2
4
  `post {value} to {url} [giving {variable}] [or {command}]`
3
5
 
@@ -14,4 +16,4 @@ Perform an HTTP PUT request with the specified data and endpoint, optionally sav
14
16
  Next: [print](print.md)
15
17
  Prev: [pop](pop.md)
16
18
 
17
- [Back](../README.md)
19
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # print
2
+
1
3
  ## Syntax:
2
4
  `print {value}`
3
5
  ## Examples:
@@ -11,4 +13,4 @@ The output is prefixed by the script line number of the print command. This is v
11
13
  Next: [push](push.md)
12
14
  Prev: [post](post.md)
13
15
 
14
- [Back](../README.md)
16
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # push
2
+
1
3
  ## Syntax:
2
4
  `push {variable} to/onto {stack}`
3
5
  ## Examples:
@@ -10,4 +12,4 @@ Push something onto the specified [stack](stack.md).
10
12
  Next: [put](put.md)
11
13
  Prev: [print](print.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # put
2
+
1
3
  ## Syntax:
2
4
  `put {value} into {variable}`
3
5
  ## Examples:
@@ -10,4 +12,4 @@ Put a value into a [variable](variable.md). The second example illustrates how t
10
12
  Next: [read](read.md)
11
13
  Prev: [push](push.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # read
2
+
1
3
  ## Syntax:
2
4
  `read {value} from {file}`
3
5
  ## Examples:
@@ -9,4 +11,4 @@ Read a value from a [file](file.md). See [open](open.md), [write](write.md) and
9
11
  Next: [replace](replace.md)
10
12
  Prev: [put](put.md)
11
13
 
12
- [Back](../README.md)
14
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # replace
2
+
1
3
  ## Syntax:
2
4
  `replace {value} with {value} in {variable}`
3
5
  ## Examples:
@@ -10,4 +12,4 @@ Replaces all occurrences of one string with another in a string [variable](varia
10
12
  Next: [return](return.md)
11
13
  Prev: [read](read.md)
12
14
 
13
- [Back](../README.md)
15
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # return
2
+
1
3
  ## Syntax:
2
4
  `return`
3
5
  ## Examples:
@@ -9,4 +11,4 @@ Return from a subroutine. See [gosub](gosub.md).
9
11
  Next: [script](script.md)
10
12
  Prev: [replace](replace.md)
11
13
 
12
- [Back](../README.md)
14
+ [Back](../../README.md)
@@ -1,3 +1,5 @@
1
+ # script
2
+
1
3
  ## Syntax:
2
4
  `script {name}`
3
5
  ## Examples:
@@ -9,4 +11,4 @@ Provides a name for the script. Note that `name` is literal text, not a script v
9
11
  Next: [set](set.md)
10
12
  Prev: [return](return.md)
11
13
 
12
- [Back](../README.md)
14
+ [Back](../../README.md)