rapydscript-ns 0.8.2 → 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 +39 -0
- package/HACKING.md +103 -103
- package/LICENSE +24 -24
- package/PYTHON_DIFFERENCES_REPORT.md +291 -0
- package/PYTHON_FEATURE_COVERAGE.md +106 -15
- package/README.md +831 -52
- package/TODO.md +4 -286
- 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 +4623 -0
- package/language-service/language-service.d.ts +40 -0
- package/package.json +9 -7
- 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 +99 -2
- package/src/baselib-containers.pyj +107 -4
- package/src/baselib-errors.pyj +44 -0
- package/src/baselib-internal.pyj +124 -5
- package/src/baselib-itertools.pyj +97 -97
- package/src/baselib-str.pyj +32 -1
- package/src/compiler.pyj +36 -36
- package/src/errors.pyj +30 -30
- package/src/lib/aes.pyj +646 -646
- package/src/lib/collections.pyj +1 -1
- 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/numpy.pyj +10 -10
- 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/analyzer.js +131 -9
- package/src/monaco-language-service/builtins.js +17 -2
- package/src/monaco-language-service/completions.js +170 -1
- package/src/monaco-language-service/diagnostics.js +25 -3
- package/src/monaco-language-service/dts.js +550 -550
- package/src/monaco-language-service/index.js +17 -0
- package/src/monaco-language-service/scope.js +3 -0
- package/src/output/classes.pyj +128 -11
- package/src/output/codegen.pyj +17 -3
- package/src/output/comments.pyj +45 -45
- package/src/output/exceptions.pyj +201 -105
- package/src/output/functions.pyj +13 -16
- package/src/output/jsx.pyj +164 -0
- package/src/output/literals.pyj +28 -2
- package/src/output/loops.pyj +0 -9
- package/src/output/modules.pyj +2 -5
- package/src/output/operators.pyj +22 -2
- package/src/output/statements.pyj +2 -2
- package/src/output/stream.pyj +1 -13
- package/src/output/treeshake.pyj +182 -182
- package/src/output/utils.pyj +72 -72
- package/src/parse.pyj +434 -114
- 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/baselib.pyj +4 -4
- package/test/classes.pyj +56 -17
- package/test/collections.pyj +5 -5
- 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_compat.pyj +326 -0
- package/test/python_features.pyj +129 -29
- package/test/regexp.pyj +55 -55
- package/test/repl.pyj +121 -121
- package/test/scoped_flags.pyj +76 -76
- package/test/slice.pyj +105 -0
- package/test/str.pyj +25 -0
- package/test/unit/fixtures/fibonacci_expected.js +1 -1
- package/test/unit/index.js +2296 -71
- package/test/unit/language-service-builtins.js +70 -0
- package/test/unit/language-service-bundle.js +5 -5
- package/test/unit/language-service-completions.js +180 -0
- package/test/unit/language-service-dts.js +543 -543
- package/test/unit/language-service-hover.js +455 -455
- package/test/unit/language-service-index.js +350 -0
- package/test/unit/language-service-scope.js +255 -0
- package/test/unit/language-service.js +625 -4
- package/test/unit/run-language-service.js +1 -0
- package/test/unit/web-repl.js +437 -0
- package/tools/build-language-service.js +2 -2
- package/tools/cli.js +547 -547
- package/tools/compile.js +219 -219
- package/tools/compiler.js +0 -24
- package/tools/completer.js +131 -131
- package/tools/embedded_compiler.js +251 -251
- package/tools/export.js +3 -37
- 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 +227 -139
- package/web-repl/sha1.js +25 -25
- package/hack_demo.pyj +0 -112
- package/web-repl/language-service.js +0 -4187
|
@@ -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
|
-
def quoted_string(x):
|
|
6
|
-
return '"' + x.replace(/\\/g, '\\\\').replace(/"/g, r'\"').replace(/\n/g, '\\n') + '"'
|
|
7
|
-
|
|
8
|
-
def render_markup(markup):
|
|
9
|
-
pos, key = 0, ''
|
|
10
|
-
while pos < markup.length:
|
|
11
|
-
ch = markup[pos]
|
|
12
|
-
if ch is '!' or ch is ':':
|
|
13
|
-
break
|
|
14
|
-
key += ch
|
|
15
|
-
pos += 1
|
|
16
|
-
fmtspec = markup[pos:]
|
|
17
|
-
prefix = ''
|
|
18
|
-
if key.endsWith('='):
|
|
19
|
-
prefix=key
|
|
20
|
-
key = key[:-1]
|
|
21
|
-
return 'ρσ_str.format("' + prefix + '{' + fmtspec + '}", ' + key + ')'
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def interpolate(template, raise_error):
|
|
25
|
-
pos = in_brace = 0
|
|
26
|
-
markup = ''
|
|
27
|
-
ans = v'[""]'
|
|
28
|
-
while pos < template.length:
|
|
29
|
-
ch = template[pos]
|
|
30
|
-
if in_brace:
|
|
31
|
-
if ch is '{':
|
|
32
|
-
in_brace += 1
|
|
33
|
-
markup += '{'
|
|
34
|
-
elif ch is '}':
|
|
35
|
-
in_brace -= 1
|
|
36
|
-
if in_brace > 0:
|
|
37
|
-
markup += '}'
|
|
38
|
-
else:
|
|
39
|
-
ans.push(v'[markup]')
|
|
40
|
-
ans.push('')
|
|
41
|
-
else:
|
|
42
|
-
markup += ch
|
|
43
|
-
else:
|
|
44
|
-
if ch is '{':
|
|
45
|
-
if template[pos+1] is '{':
|
|
46
|
-
pos += 1
|
|
47
|
-
ans[-1] += '{'
|
|
48
|
-
else:
|
|
49
|
-
in_brace = 1
|
|
50
|
-
markup = ''
|
|
51
|
-
elif ch is '}':
|
|
52
|
-
if template[pos+1] is '}':
|
|
53
|
-
pos += 1
|
|
54
|
-
ans[-1] += '}'
|
|
55
|
-
else:
|
|
56
|
-
raise_error("f-string: single '}' is not allowed")
|
|
57
|
-
else:
|
|
58
|
-
ans[-1] += ch
|
|
59
|
-
|
|
60
|
-
pos += 1
|
|
61
|
-
|
|
62
|
-
if in_brace:
|
|
63
|
-
raise_error("expected '}' before end of string")
|
|
64
|
-
|
|
65
|
-
if ans[-1] is '+':
|
|
66
|
-
ans[-1] = ''
|
|
67
|
-
for v'var i = 0; i < ans.length; i++':
|
|
68
|
-
if jstype(ans[i]) is 'string':
|
|
69
|
-
ans[i] = quoted_string(ans[i])
|
|
70
|
-
else:
|
|
71
|
-
ans[i] = '+' + render_markup.apply(this, ans[i]) + '+'
|
|
72
|
-
return ans.join('')
|
|
1
|
+
# vim:fileencoding=utf-8
|
|
2
|
+
# License: BSD Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
|
|
3
|
+
from __python__ import hash_literals
|
|
4
|
+
|
|
5
|
+
def quoted_string(x):
|
|
6
|
+
return '"' + x.replace(/\\/g, '\\\\').replace(/"/g, r'\"').replace(/\n/g, '\\n') + '"'
|
|
7
|
+
|
|
8
|
+
def render_markup(markup):
|
|
9
|
+
pos, key = 0, ''
|
|
10
|
+
while pos < markup.length:
|
|
11
|
+
ch = markup[pos]
|
|
12
|
+
if ch is '!' or ch is ':':
|
|
13
|
+
break
|
|
14
|
+
key += ch
|
|
15
|
+
pos += 1
|
|
16
|
+
fmtspec = markup[pos:]
|
|
17
|
+
prefix = ''
|
|
18
|
+
if key.endsWith('='):
|
|
19
|
+
prefix=key
|
|
20
|
+
key = key[:-1]
|
|
21
|
+
return 'ρσ_str.format("' + prefix + '{' + fmtspec + '}", ' + key + ')'
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def interpolate(template, raise_error):
|
|
25
|
+
pos = in_brace = 0
|
|
26
|
+
markup = ''
|
|
27
|
+
ans = v'[""]'
|
|
28
|
+
while pos < template.length:
|
|
29
|
+
ch = template[pos]
|
|
30
|
+
if in_brace:
|
|
31
|
+
if ch is '{':
|
|
32
|
+
in_brace += 1
|
|
33
|
+
markup += '{'
|
|
34
|
+
elif ch is '}':
|
|
35
|
+
in_brace -= 1
|
|
36
|
+
if in_brace > 0:
|
|
37
|
+
markup += '}'
|
|
38
|
+
else:
|
|
39
|
+
ans.push(v'[markup]')
|
|
40
|
+
ans.push('')
|
|
41
|
+
else:
|
|
42
|
+
markup += ch
|
|
43
|
+
else:
|
|
44
|
+
if ch is '{':
|
|
45
|
+
if template[pos+1] is '{':
|
|
46
|
+
pos += 1
|
|
47
|
+
ans[-1] += '{'
|
|
48
|
+
else:
|
|
49
|
+
in_brace = 1
|
|
50
|
+
markup = ''
|
|
51
|
+
elif ch is '}':
|
|
52
|
+
if template[pos+1] is '}':
|
|
53
|
+
pos += 1
|
|
54
|
+
ans[-1] += '}'
|
|
55
|
+
else:
|
|
56
|
+
raise_error("f-string: single '}' is not allowed")
|
|
57
|
+
else:
|
|
58
|
+
ans[-1] += ch
|
|
59
|
+
|
|
60
|
+
pos += 1
|
|
61
|
+
|
|
62
|
+
if in_brace:
|
|
63
|
+
raise_error("expected '}' before end of string")
|
|
64
|
+
|
|
65
|
+
if ans[-1] is '+':
|
|
66
|
+
ans[-1] = ''
|
|
67
|
+
for v'var i = 0; i < ans.length; i++':
|
|
68
|
+
if jstype(ans[i]) is 'string':
|
|
69
|
+
ans[i] = quoted_string(ans[i])
|
|
70
|
+
else:
|
|
71
|
+
ans[i] = '+' + render_markup.apply(this, ans[i]) + '+'
|
|
72
|
+
return ans.join('')
|
package/src/tokenizer.pyj
CHANGED
|
@@ -177,6 +177,7 @@ def tokenizer(raw_text, filename):
|
|
|
177
177
|
'index_or_slice': v'[ false ]',
|
|
178
178
|
'expecting_object_literal_key': False, # This is set by the parser when it is expecting an object literal key
|
|
179
179
|
'prev_was_comma': False, # True when the previous token was a ',' — used to detect positional-only '/' separator
|
|
180
|
+
'jsx_depth': 0, # >0 when inside JSX children content
|
|
180
181
|
}
|
|
181
182
|
def peek():
|
|
182
183
|
return S.text.charAt(S.pos)
|
|
@@ -639,6 +640,23 @@ def tokenizer(raw_text, filename):
|
|
|
639
640
|
if not ch:
|
|
640
641
|
return token("eof")
|
|
641
642
|
|
|
643
|
+
# JSX children mode: when inside JSX content, read raw text until { or <
|
|
644
|
+
if S.jsx_depth > 0 and ch is not '{' and ch is not '<':
|
|
645
|
+
result = ""
|
|
646
|
+
while S.pos < S.text.length:
|
|
647
|
+
c = S.text.charAt(S.pos)
|
|
648
|
+
if c is '{' or c is '<':
|
|
649
|
+
break
|
|
650
|
+
if c is '\n':
|
|
651
|
+
S.line += 1
|
|
652
|
+
S.col = 0
|
|
653
|
+
S.newline_before = True
|
|
654
|
+
else:
|
|
655
|
+
S.col += 1
|
|
656
|
+
result += c
|
|
657
|
+
S.pos += 1
|
|
658
|
+
return token("jsx_text", result)
|
|
659
|
+
|
|
642
660
|
code = ch.charCodeAt(0)
|
|
643
661
|
tmp_ = code
|
|
644
662
|
if tmp_ is 34 or tmp_ is 39: # double-quote (") or single quote (')
|
|
@@ -700,4 +718,15 @@ def tokenizer(raw_text, filename):
|
|
|
700
718
|
S = nc
|
|
701
719
|
return S
|
|
702
720
|
|
|
721
|
+
next_token.jsx_enter = def():
|
|
722
|
+
S.jsx_depth += 1
|
|
723
|
+
S.indentation_matters.push(False)
|
|
724
|
+
|
|
725
|
+
next_token.jsx_exit = def():
|
|
726
|
+
if S.jsx_depth > 0:
|
|
727
|
+
S.jsx_depth -= 1
|
|
728
|
+
S.indentation_matters.pop()
|
|
729
|
+
# After < in JSX context, / is always an operator (e.g. </tag>), never a regex
|
|
730
|
+
S.regex_allowed = False
|
|
731
|
+
|
|
703
732
|
return next_token
|