rapydscript-ns 0.8.3 → 0.8.4
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.
- package/.agignore +1 -1
- package/.github/workflows/ci.yml +38 -38
- package/=template.pyj +5 -5
- package/CHANGELOG.md +8 -0
- package/HACKING.md +103 -103
- package/LICENSE +24 -24
- package/PYTHON_DIFFERENCES_REPORT.md +2 -2
- package/PYTHON_FEATURE_COVERAGE.md +13 -13
- package/README.md +670 -6
- package/TODO.md +5 -6
- package/add-toc-to-readme +2 -2
- package/bin/export +75 -75
- package/bin/rapydscript +70 -70
- package/bin/web-repl-export +102 -102
- package/build +2 -2
- package/language-service/index.js +155 -6
- package/package.json +1 -1
- package/publish.py +37 -37
- package/release/baselib-plain-pretty.js +2006 -229
- package/release/baselib-plain-ugly.js +70 -3
- package/release/compiler.js +11554 -3870
- package/release/signatures.json +31 -29
- package/session.vim +4 -4
- package/setup.cfg +2 -2
- package/src/ast.pyj +93 -1
- package/src/baselib-builtins.pyj +22 -1
- package/src/baselib-containers.pyj +99 -0
- package/src/baselib-errors.pyj +44 -0
- package/src/baselib-internal.pyj +94 -4
- package/src/baselib-itertools.pyj +97 -97
- package/src/baselib-str.pyj +24 -0
- package/src/compiler.pyj +36 -36
- package/src/errors.pyj +30 -30
- package/src/lib/aes.pyj +646 -646
- package/src/lib/copy.pyj +120 -0
- package/src/lib/elementmaker.pyj +83 -83
- package/src/lib/encodings.pyj +126 -126
- package/src/lib/gettext.pyj +569 -569
- package/src/lib/itertools.pyj +580 -580
- package/src/lib/math.pyj +193 -193
- package/src/lib/operator.pyj +11 -11
- package/src/lib/pythonize.pyj +20 -20
- package/src/lib/random.pyj +118 -118
- package/src/lib/re.pyj +470 -470
- package/src/lib/react.pyj +74 -0
- package/src/lib/traceback.pyj +63 -63
- package/src/lib/uuid.pyj +77 -77
- package/src/monaco-language-service/builtins.js +5 -0
- package/src/monaco-language-service/diagnostics.js +25 -3
- package/src/monaco-language-service/dts.js +550 -550
- package/src/output/classes.pyj +108 -8
- package/src/output/codegen.pyj +16 -2
- package/src/output/comments.pyj +45 -45
- package/src/output/exceptions.pyj +201 -105
- package/src/output/functions.pyj +9 -0
- package/src/output/jsx.pyj +164 -0
- package/src/output/literals.pyj +28 -2
- package/src/output/modules.pyj +1 -1
- package/src/output/operators.pyj +8 -2
- package/src/output/statements.pyj +2 -2
- package/src/output/stream.pyj +1 -0
- package/src/output/treeshake.pyj +182 -182
- package/src/output/utils.pyj +72 -72
- package/src/parse.pyj +417 -113
- package/src/string_interpolation.pyj +72 -72
- package/src/tokenizer.pyj +29 -0
- package/src/unicode_aliases.pyj +576 -576
- package/src/utils.pyj +192 -192
- package/test/_import_one.pyj +37 -37
- package/test/_import_two/__init__.pyj +11 -11
- package/test/_import_two/level2/deep.pyj +4 -4
- package/test/_import_two/other.pyj +6 -6
- package/test/_import_two/sub.pyj +13 -13
- package/test/aes_vectors.pyj +421 -421
- package/test/annotations.pyj +80 -80
- package/test/decorators.pyj +77 -77
- package/test/docstrings.pyj +39 -39
- package/test/elementmaker_test.pyj +45 -45
- package/test/functions.pyj +151 -151
- package/test/generators.pyj +41 -41
- package/test/generic.pyj +370 -370
- package/test/imports.pyj +72 -72
- package/test/internationalization.pyj +73 -73
- package/test/lint.pyj +164 -164
- package/test/loops.pyj +85 -85
- package/test/numpy.pyj +734 -734
- package/test/omit_function_metadata.pyj +20 -20
- package/test/python_features.pyj +19 -6
- package/test/regexp.pyj +55 -55
- package/test/repl.pyj +121 -121
- package/test/scoped_flags.pyj +76 -76
- package/test/unit/index.js +2177 -64
- package/test/unit/language-service-dts.js +543 -543
- package/test/unit/language-service-hover.js +455 -455
- package/test/unit/language-service.js +590 -4
- package/test/unit/web-repl.js +303 -0
- package/tools/cli.js +547 -547
- package/tools/compile.js +219 -219
- package/tools/completer.js +131 -131
- package/tools/embedded_compiler.js +251 -251
- package/tools/gettext.js +185 -185
- package/tools/ini.js +65 -65
- package/tools/msgfmt.js +187 -187
- package/tools/repl.js +223 -223
- package/tools/test.js +118 -118
- package/tools/utils.js +128 -128
- package/tools/web_repl.js +95 -95
- package/try +41 -41
- package/web-repl/env.js +196 -74
- package/web-repl/index.html +163 -163
- package/web-repl/main.js +252 -254
- package/web-repl/prism.css +139 -139
- package/web-repl/prism.js +113 -113
- package/web-repl/rapydscript.js +224 -102
- package/web-repl/sha1.js +25 -25
- package/hack_demo.pyj +0 -112
package/src/output/utils.pyj
CHANGED
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
# vim:fileencoding=utf-8
|
|
2
|
-
# License: BSD Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
|
|
3
|
-
from __python__ import hash_literals
|
|
4
|
-
|
|
5
|
-
from ast import AST_BlockStatement, is_node_type
|
|
6
|
-
|
|
7
|
-
def best_of(a):
|
|
8
|
-
best = a[0]
|
|
9
|
-
len_ = best.length
|
|
10
|
-
for i in range(1, a.length):
|
|
11
|
-
if a[i].length < len_:
|
|
12
|
-
best = a[i]
|
|
13
|
-
len_ = best.length
|
|
14
|
-
return best
|
|
15
|
-
|
|
16
|
-
def make_num(num):
|
|
17
|
-
str_ = num.toString(10)
|
|
18
|
-
a = [ str_.replace(/^0\./, ".").replace("e+", "e") ]
|
|
19
|
-
m = None
|
|
20
|
-
|
|
21
|
-
if Math.floor(num) is num:
|
|
22
|
-
if num >= 0:
|
|
23
|
-
a.push("0x" + num.toString(16).toLowerCase(), # probably pointless
|
|
24
|
-
"0" + num.toString(8))
|
|
25
|
-
else:
|
|
26
|
-
a.push("-0x" + (-num).toString(16).toLowerCase(), # probably pointless
|
|
27
|
-
"-0" + (-num).toString(8))
|
|
28
|
-
|
|
29
|
-
if m = /^(.*?)(0+)$/.exec(num):
|
|
30
|
-
a.push(m[1] + "e" + m[2].length)
|
|
31
|
-
|
|
32
|
-
elif m = /^0?\.(0+)(.*)$/.exec(num):
|
|
33
|
-
a.push(m[2] + "e-" + (m[1].length + m[2].length), str_.substr(str_.indexOf(".")))
|
|
34
|
-
|
|
35
|
-
return best_of(a)
|
|
36
|
-
|
|
37
|
-
def make_block(stmt, output):
|
|
38
|
-
if is_node_type(stmt, AST_BlockStatement):
|
|
39
|
-
stmt.print(output)
|
|
40
|
-
return
|
|
41
|
-
|
|
42
|
-
output.with_block(def():
|
|
43
|
-
output.indent()
|
|
44
|
-
stmt.print(output)
|
|
45
|
-
output.newline()
|
|
46
|
-
)
|
|
47
|
-
|
|
48
|
-
def create_doctring(docstrings):
|
|
49
|
-
ans = v'[]'
|
|
50
|
-
for ds in docstrings:
|
|
51
|
-
ds = str.rstrip(ds.value)
|
|
52
|
-
lines = v'[]'
|
|
53
|
-
min_leading_whitespace = ''
|
|
54
|
-
for line in ds.split(/$/gm):
|
|
55
|
-
r = /^\s+/.exec(line)
|
|
56
|
-
leading_whitespace = ''
|
|
57
|
-
if r:
|
|
58
|
-
leading_whitespace = r[0].replace(/[\n\r]/g, '') if r else ''
|
|
59
|
-
line = line[r[0].length:]
|
|
60
|
-
if not str.strip(line):
|
|
61
|
-
lines.push(v'["", ""]')
|
|
62
|
-
else:
|
|
63
|
-
leading_whitespace = leading_whitespace.replace(/\t/g, ' ')
|
|
64
|
-
if leading_whitespace and (not min_leading_whitespace or leading_whitespace.length < min_leading_whitespace.length):
|
|
65
|
-
min_leading_whitespace = leading_whitespace
|
|
66
|
-
lines.push(v'[leading_whitespace, line]')
|
|
67
|
-
for lw, l in lines:
|
|
68
|
-
if min_leading_whitespace:
|
|
69
|
-
lw = lw[min_leading_whitespace.length:]
|
|
70
|
-
ans.push(lw + l)
|
|
71
|
-
ans.push('')
|
|
72
|
-
return str.rstrip(ans.join('\n'))
|
|
1
|
+
# vim:fileencoding=utf-8
|
|
2
|
+
# License: BSD Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
|
|
3
|
+
from __python__ import hash_literals
|
|
4
|
+
|
|
5
|
+
from ast import AST_BlockStatement, is_node_type
|
|
6
|
+
|
|
7
|
+
def best_of(a):
|
|
8
|
+
best = a[0]
|
|
9
|
+
len_ = best.length
|
|
10
|
+
for i in range(1, a.length):
|
|
11
|
+
if a[i].length < len_:
|
|
12
|
+
best = a[i]
|
|
13
|
+
len_ = best.length
|
|
14
|
+
return best
|
|
15
|
+
|
|
16
|
+
def make_num(num):
|
|
17
|
+
str_ = num.toString(10)
|
|
18
|
+
a = [ str_.replace(/^0\./, ".").replace("e+", "e") ]
|
|
19
|
+
m = None
|
|
20
|
+
|
|
21
|
+
if Math.floor(num) is num:
|
|
22
|
+
if num >= 0:
|
|
23
|
+
a.push("0x" + num.toString(16).toLowerCase(), # probably pointless
|
|
24
|
+
"0" + num.toString(8))
|
|
25
|
+
else:
|
|
26
|
+
a.push("-0x" + (-num).toString(16).toLowerCase(), # probably pointless
|
|
27
|
+
"-0" + (-num).toString(8))
|
|
28
|
+
|
|
29
|
+
if m = /^(.*?)(0+)$/.exec(num):
|
|
30
|
+
a.push(m[1] + "e" + m[2].length)
|
|
31
|
+
|
|
32
|
+
elif m = /^0?\.(0+)(.*)$/.exec(num):
|
|
33
|
+
a.push(m[2] + "e-" + (m[1].length + m[2].length), str_.substr(str_.indexOf(".")))
|
|
34
|
+
|
|
35
|
+
return best_of(a)
|
|
36
|
+
|
|
37
|
+
def make_block(stmt, output):
|
|
38
|
+
if is_node_type(stmt, AST_BlockStatement):
|
|
39
|
+
stmt.print(output)
|
|
40
|
+
return
|
|
41
|
+
|
|
42
|
+
output.with_block(def():
|
|
43
|
+
output.indent()
|
|
44
|
+
stmt.print(output)
|
|
45
|
+
output.newline()
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
def create_doctring(docstrings):
|
|
49
|
+
ans = v'[]'
|
|
50
|
+
for ds in docstrings:
|
|
51
|
+
ds = str.rstrip(ds.value)
|
|
52
|
+
lines = v'[]'
|
|
53
|
+
min_leading_whitespace = ''
|
|
54
|
+
for line in ds.split(/$/gm):
|
|
55
|
+
r = /^\s+/.exec(line)
|
|
56
|
+
leading_whitespace = ''
|
|
57
|
+
if r:
|
|
58
|
+
leading_whitespace = r[0].replace(/[\n\r]/g, '') if r else ''
|
|
59
|
+
line = line[r[0].length:]
|
|
60
|
+
if not str.strip(line):
|
|
61
|
+
lines.push(v'["", ""]')
|
|
62
|
+
else:
|
|
63
|
+
leading_whitespace = leading_whitespace.replace(/\t/g, ' ')
|
|
64
|
+
if leading_whitespace and (not min_leading_whitespace or leading_whitespace.length < min_leading_whitespace.length):
|
|
65
|
+
min_leading_whitespace = leading_whitespace
|
|
66
|
+
lines.push(v'[leading_whitespace, line]')
|
|
67
|
+
for lw, l in lines:
|
|
68
|
+
if min_leading_whitespace:
|
|
69
|
+
lw = lw[min_leading_whitespace.length:]
|
|
70
|
+
ans.push(lw + l)
|
|
71
|
+
ans.push('')
|
|
72
|
+
return str.rstrip(ans.join('\n'))
|