easycoder 250118.2__tar.gz → 250123.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.
- {easycoder-250118.2 → easycoder-250123.2}/PKG-INFO +1 -1
- {easycoder-250118.2 → easycoder-250123.2}/easycoder/__init__.py +1 -1
- {easycoder-250118.2 → easycoder-250123.2}/easycoder/ec_core.py +33 -25
- easycoder-250123.2/easycoder/ec_graphics.py +645 -0
- easycoder-250123.2/easycoder/ec_gutils.py +144 -0
- {easycoder-250118.2 → easycoder-250123.2}/scripts/config.ecg +75 -69
- easycoder-250123.2/scripts/connect.ecg +62 -0
- easycoder-250123.2/scripts/findxr.ecs +26 -0
- easycoder-250118.2/easycoder/ec_graphics.py +0 -314
- easycoder-250118.2/easycoder/ec_gutils.py +0 -84
- {easycoder-250118.2 → easycoder-250123.2}/LICENSE +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/README.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/README.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/README.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/boolean.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/empty.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/ends.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/even.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/exists.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/greater.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/hasProperty.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/includes.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/is.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/less.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/list.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/none.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/not.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/numeric.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/object.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/odd.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/starts.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/conditions/string.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/add.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/append.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/assert.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/begin.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/clear.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/close.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/create.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/debug.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/decrement.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/delete.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/divide.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/exit.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/file.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/fork.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/get.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/go.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/gosub.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/if.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/import.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/increment.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/index.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/init.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/input.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/load.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/lock.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/module.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/multiply.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/negate.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/open.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/pop.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/post.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/print.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/push.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/put.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/read.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/release.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/replace.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/return.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/run.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/save.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/script.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/set.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/split.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/stack.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/stop.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/system.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/take.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/toggle.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/truncate.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/unlock.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/variable.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/wait.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/while.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/keywords/write.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/arg.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/args.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/cos.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/datime.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/decode.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/element.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/elements.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/empty.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/encode.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/error.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/files.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/float.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/from.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/hash.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/index.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/integer.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/json.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/keys.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/left.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/length.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/lowercase.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/memory.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/modification.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/modulo.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/newline.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/now.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/position.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/property.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/random.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/right.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/sin.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/stringify.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/tab.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/tan.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/timestamp.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/today.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/trim.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/type.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/uppercase.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/value.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/core/values/weekday.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/README.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/attach.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/close.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/create.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/ellipse.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/image.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/move.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/on.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/rectangle.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/render.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/run.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/set.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/keywords/text.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/values/attribute.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/doc/graphics/values/window.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/easycoder/README.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/easycoder/ec_classes.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/easycoder/ec_compiler.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/easycoder/ec_condition.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/easycoder/ec_handler.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/easycoder/ec_program.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/easycoder/ec_timestamp.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/easycoder/ec_value.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/images/Semoigo Dawn.jpg +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/json/graphics-demo.json +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/ec_keyboard.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/ec_p100.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/keyboards/4-function.json +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/keyboards/4-function.png +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/keyboards/qwerty-0.json +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/keyboards/qwerty-0.png +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/keyboards/qwerty-1.json +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/keyboards/qwerty-1.png +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/keyboards/qwerty-2.json +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/keyboards/qwerty-2.png +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/keyboards/qwerty-3.json +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/keyboards/qwerty-3.png +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/plugins/points.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/pyproject.toml +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/scripts/README.md +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/scripts/benchmark.ecs +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/scripts/ec_keyboard.py +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/scripts/fizzbuzz.ecs +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/scripts/hello.ecs +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/scripts/points.ecs +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/scripts/test.ecs +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/scripts/testg.ecg +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/scripts/tests.ecs +0 -0
- {easycoder-250118.2 → easycoder-250123.2}/test.ecs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: easycoder
|
|
3
|
-
Version:
|
|
3
|
+
Version: 250123.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>
|
|
@@ -2,7 +2,7 @@ import json, math, hashlib, threading, os, subprocess, sys, requests, time, numb
|
|
|
2
2
|
from psutil import Process
|
|
3
3
|
from datetime import datetime, timezone
|
|
4
4
|
from random import randrange
|
|
5
|
-
from .ec_classes import FatalError, RuntimeWarning, RuntimeError, AssertionError, Condition
|
|
5
|
+
from .ec_classes import FatalError, RuntimeWarning, RuntimeError, AssertionError, Condition, Object
|
|
6
6
|
from .ec_handler import Handler
|
|
7
7
|
from .ec_timestamp import getTimestamp
|
|
8
8
|
|
|
@@ -729,6 +729,12 @@ class Core(Handler):
|
|
|
729
729
|
target['locked'] = True
|
|
730
730
|
return self.nextPC()
|
|
731
731
|
|
|
732
|
+
# Log a message
|
|
733
|
+
def k_log(self, command):
|
|
734
|
+
command['log'] = True
|
|
735
|
+
command['keyword'] = 'print'
|
|
736
|
+
return self.k_print(command)
|
|
737
|
+
|
|
732
738
|
# Declare a module variable
|
|
733
739
|
def k_module(self, command):
|
|
734
740
|
return self.compileVariable(command)
|
|
@@ -995,11 +1001,11 @@ class Core(Handler):
|
|
|
995
1001
|
value = self.getRuntimeValue(command['value'])
|
|
996
1002
|
program = command['program']
|
|
997
1003
|
code = program.code[program.pc]
|
|
998
|
-
lino = code['lino'] + 1
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1004
|
+
lino = str(code['lino'] + 1)
|
|
1005
|
+
while len(lino) < 4: lino = f' {lino}'
|
|
1006
|
+
if value == None: value = '<empty>'
|
|
1007
|
+
if 'log' in command: print(f'{datetime.now().time()}: {lino}-> {value}')
|
|
1008
|
+
else: print(value)
|
|
1003
1009
|
return self.nextPC()
|
|
1004
1010
|
|
|
1005
1011
|
# Push a value onto a stack
|
|
@@ -1147,6 +1153,7 @@ class Core(Handler):
|
|
|
1147
1153
|
return self.stack.pop()
|
|
1148
1154
|
|
|
1149
1155
|
# Compile and run a script
|
|
1156
|
+
# run {path} [as {module}] [with {variable} [and {variable}...]]
|
|
1150
1157
|
def k_run(self, command):
|
|
1151
1158
|
try:
|
|
1152
1159
|
command['path'] = self.nextValue()
|
|
@@ -1157,20 +1164,24 @@ class Core(Handler):
|
|
|
1157
1164
|
if self.nextIsSymbol():
|
|
1158
1165
|
record = self.getSymbolRecord()
|
|
1159
1166
|
if record['keyword'] == 'module':
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1167
|
+
name = record['name']
|
|
1168
|
+
command['module'] = name
|
|
1169
|
+
else: RuntimeError(self.program, f'Symbol \'name\' is not a module')
|
|
1170
|
+
else: RuntimeError(self.program, 'Module name expected after \'as\'')
|
|
1171
|
+
else: RuntimeError(self.program, '\'as {module name}\' expected')
|
|
1172
|
+
exports = []
|
|
1173
|
+
if self.peek() == 'with':
|
|
1174
|
+
self.nextToken()
|
|
1175
|
+
while True:
|
|
1176
|
+
name = self.nextToken()
|
|
1177
|
+
record = self.getSymbolRecord()
|
|
1178
|
+
exports.append(name)
|
|
1179
|
+
if self.peek() != 'and':
|
|
1180
|
+
break
|
|
1181
|
+
self.nextToken()
|
|
1182
|
+
command['exports'] = json.dumps(exports)
|
|
1183
|
+
self.add(command)
|
|
1184
|
+
return True
|
|
1174
1185
|
|
|
1175
1186
|
def r_run(self, command):
|
|
1176
1187
|
module = self.getVariable(command['module'])
|
|
@@ -1734,10 +1745,7 @@ class Core(Handler):
|
|
|
1734
1745
|
if symbolRecord['valueHolder']:
|
|
1735
1746
|
value['target'] = symbolRecord['name']
|
|
1736
1747
|
return value
|
|
1737
|
-
|
|
1738
|
-
value['value'] = self.getValue()
|
|
1739
|
-
return value
|
|
1740
|
-
self.warning(f'Core.compileValue: Token \'{self.getToken()}\' does not hold a value')
|
|
1748
|
+
FatalError(self.program.compiler, 'Variable does not hold a value')
|
|
1741
1749
|
return None
|
|
1742
1750
|
|
|
1743
1751
|
if token == 'arg':
|
|
@@ -2503,7 +2511,7 @@ class Core(Handler):
|
|
|
2503
2511
|
return not comparison if condition.negate else comparison
|
|
2504
2512
|
|
|
2505
2513
|
def c_not(self, condition):
|
|
2506
|
-
return not self.getRuntimeValue(condition.
|
|
2514
|
+
return not self.getRuntimeValue(condition.value)
|
|
2507
2515
|
|
|
2508
2516
|
def c_object(self, condition):
|
|
2509
2517
|
comparison = type(self.getRuntimeValue(condition.value1)) is dict
|