rapydscript-ns 0.9.2 → 0.9.3
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 +19 -0
- package/HACKING.md +103 -103
- package/LICENSE +24 -24
- package/PYTHON_GAPS.md +420 -0
- package/README.md +153 -29
- package/TODO.md +16 -118
- 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 +237 -8
- package/memory/project_string_impl.md +43 -0
- package/package.json +1 -1
- package/publish.py +37 -37
- package/release/baselib-plain-pretty.js +248 -38
- package/release/baselib-plain-ugly.js +8 -8
- package/release/compiler.js +778 -277
- package/release/signatures.json +30 -30
- package/session.vim +4 -4
- package/setup.cfg +2 -2
- package/src/ast.pyj +4 -1
- package/src/baselib-builtins.pyj +56 -2
- package/src/baselib-containers.pyj +2 -0
- package/src/baselib-errors.pyj +7 -3
- package/src/baselib-internal.pyj +51 -6
- package/src/baselib-str.pyj +5 -3
- package/src/compiler.pyj +36 -36
- package/src/errors.pyj +30 -30
- package/src/lib/aes.pyj +646 -646
- package/src/lib/asyncio.pyj +534 -0
- package/src/lib/base64.pyj +399 -0
- package/src/lib/bisect.pyj +73 -0
- package/src/lib/collections.pyj +1 -1
- package/src/lib/copy.pyj +120 -120
- package/src/lib/csv.pyj +494 -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/heapq.pyj +98 -0
- package/src/lib/html.pyj +382 -0
- package/src/lib/http/__init__.pyj +98 -0
- package/src/lib/http/client.pyj +304 -0
- package/src/lib/http/cookies.pyj +236 -0
- package/src/lib/itertools.pyj +580 -580
- package/src/lib/logging.pyj +672 -0
- 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/react.pyj +74 -74
- package/src/lib/string.pyj +357 -0
- package/src/lib/textwrap.pyj +329 -0
- package/src/lib/traceback.pyj +63 -63
- package/src/lib/urllib/__init__.pyj +14 -0
- package/src/lib/urllib/error.pyj +66 -0
- package/src/lib/urllib/parse.pyj +475 -0
- package/src/lib/urllib/request.pyj +86 -0
- package/src/lib/uuid.pyj +77 -77
- package/src/monaco-language-service/analyzer.js +5 -2
- package/src/monaco-language-service/completions.js +26 -0
- package/src/monaco-language-service/diagnostics.js +202 -3
- package/src/monaco-language-service/dts.js +550 -550
- package/src/monaco-language-service/scope.js +1 -0
- package/src/output/comments.pyj +45 -45
- package/src/output/exceptions.pyj +201 -201
- package/src/output/functions.pyj +152 -6
- package/src/output/jsx.pyj +164 -164
- package/src/output/loops.pyj +17 -2
- package/src/output/modules.pyj +1 -1
- package/src/output/operators.pyj +15 -0
- package/src/output/stream.pyj +0 -1
- package/src/output/treeshake.pyj +182 -182
- package/src/output/utils.pyj +72 -72
- package/src/parse.pyj +80 -17
- package/src/string_interpolation.pyj +72 -72
- package/src/tokenizer.pyj +1 -1
- 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/async_generators.pyj +144 -0
- package/test/asyncio.pyj +307 -0
- package/test/base64.pyj +202 -0
- package/test/bisect.pyj +178 -0
- package/test/csv.pyj +405 -0
- package/test/decorators.pyj +77 -77
- package/test/docstrings.pyj +39 -39
- package/test/elementmaker_test.pyj +45 -45
- package/test/float_special.pyj +64 -0
- package/test/functions.pyj +151 -151
- package/test/generators.pyj +41 -41
- package/test/generic.pyj +370 -370
- package/test/heapq.pyj +174 -0
- package/test/html.pyj +212 -0
- package/test/http.pyj +259 -0
- package/test/imports.pyj +79 -72
- package/test/internationalization.pyj +73 -73
- package/test/lint.pyj +164 -164
- package/test/logging.pyj +356 -0
- package/test/long.pyj +130 -0
- package/test/loops.pyj +85 -85
- package/test/numpy.pyj +734 -734
- package/test/parenthesized_with.pyj +141 -0
- package/test/python_compat.pyj +3 -5
- package/test/python_modulo.pyj +76 -0
- package/test/python_modulo_off.pyj +21 -0
- package/test/repl.pyj +121 -121
- package/test/scoped_flags.pyj +76 -76
- package/test/str.pyj +14 -0
- package/test/string.pyj +245 -0
- package/test/textwrap.pyj +172 -0
- package/test/type_display.pyj +48 -0
- package/test/type_enforcement.pyj +164 -0
- package/test/unit/index.js +14 -6
- package/test/unit/language-service-completions.js +119 -0
- package/test/unit/language-service-dts.js +543 -543
- package/test/unit/language-service-hover.js +455 -455
- package/test/unit/language-service-scope.js +32 -0
- package/test/unit/language-service.js +127 -3
- package/test/unit/run-language-service.js +17 -3
- package/test/unit/web-repl.js +2094 -29
- package/test/urllib.pyj +193 -0
- package/tools/compile.js +1 -1
- package/tools/compiler.d.ts +367 -367
- package/tools/completer.js +131 -131
- package/tools/embedded_compiler.js +7 -7
- 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 -196
- package/web-repl/index.html +163 -163
- package/web-repl/main.js +1 -1
- package/web-repl/prism.css +139 -139
- package/web-repl/prism.js +113 -113
- package/web-repl/rapydscript.js +224 -224
- package/web-repl/sha1.js +25 -25
- package/test/omit_function_metadata.pyj +0 -20
|
@@ -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
|
@@ -706,7 +706,7 @@ def tokenizer(raw_text, filename):
|
|
|
706
706
|
if (peek() is "'" or peek() is '"') and is_string_modifier(tok.value):
|
|
707
707
|
mods = tok.value.toLowerCase()
|
|
708
708
|
start_pos_for_string = S.tokpos
|
|
709
|
-
stok = read_string(mods.indexOf('r') is not -1, mods.indexOf('v') is not -1)
|
|
709
|
+
stok = read_string(mods.indexOf('r') is not -1 or mods.indexOf('v') is not -1, mods.indexOf('v') is not -1)
|
|
710
710
|
tok.endpos = stok.endpos
|
|
711
711
|
if stok.type is not 'js' and mods.indexOf('f') is not -1:
|
|
712
712
|
tok.col += start_pos_for_string - tok.pos
|