-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjsm_const.py
90 lines (65 loc) · 2.63 KB
/
jsm_const.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import re
ALL_TESTS_PASSED = 'All tests passed.'
BEGIN = 'begin'
BUILD_STRIP_RX = re.compile( r'//#BEGIN_BUILD_STRIP[\s\S]*?//#END_BUILD_STRIP' )
CHILDREN = 'children'
CODE = 'code'
D8 = 'd8'
DEFAULT_IN = 'jsm_dev'
DEPTREE_RX = re.compile( r'(need\$|\(\s*typeof\s+need\$\s*\!\=\=\s*(?P<qq>["\'])undefined(?P=qq)\s*\?\s*need\$\s*\:\s*load\s*\))\s*\(\s*(?P<quote>["\'])(?P<filename>[^"\']+)(?P=quote)\s*\);?' )
DEFAULT_OUT = 'jsm_out'
DEFAULT_OUT_BUILD = 'jsm_out_build'
DEFAULT_OUT_MINI = 'jsm_out_mini'
END = 'end'
FILENAME = 'filename'
IS_JSM = 'isJsm'
JS_WORKSPACE = 'js_workspace'
JS_SEP_IN = '\\n##########'
JS_SEP_OUT = '\n##########\n'
JSM2JS_AND_INLINE_SETUP = ' '.join([
'load("jsm2js.js");',
'load("inline_code.js");',
JS_WORKSPACE + ' = {};',
'',
])
JSM2JS_AND_INLINE_PREPARE_ONE = lambda in_filename,out_filename: ' '.join( [
'var in_filename = "' + in_filename + '";',
'var out_filename = "' + out_filename + '";',
'print( "#in_filename:\'" + in_filename + "\'" );',
'print( "#out_filename:\'" + out_filename + "\'" );',
'print( inlineCode( jsm2js( read( in_filename ) ), ' + JS_WORKSPACE + ', in_filename ) );',
'',
])
JS_NO_CHANGE_PREPARE_ONE = lambda in_filename,out_filename: ' '.join( [
'var in_filename = "' + in_filename + '";',
'var out_filename = "' + out_filename + '";',
'print( "#in_filename:\'" + in_filename + "\'" );',
'print( "#out_filename:\'" + out_filename + "\'" );',
'print();',
'',
])
JS_OUT_PIECE_RX = re.compile( r'^\s*#in_filename:["\'](?P<in_filename>[^"\']+?)["\']\s*#out_filename:["\'](?P<out_filename>[^"\']+?)["\']\s*(?P<outcode>[\s\S]*)$' )
JS_EXT = '.js'
JSM_EXT = '.jsm'
MINIFY = lambda filename: 'load("minify.js"); print(minify(read("' + filename + '")))'
RUN_TEST_JS = lambda filename, testfilename, dev = False, all_tests_passed_str = ALL_TESTS_PASSED: ' '.join(
( ( 'load("need$.js");', 'need$("' + filename + '");', ) if dev # dev mode: need$ dependencies allowed
else ( 'load("' + filename + '");',
'load("need$.js");' if not filename.endswith('_standalone.js') else '',
)
) # build mode: all need$ dependencies must have been eliminated
+
( 'need$("' + testfilename + '");', # the test file itself can use need$ in both dev and build modes
'var result;',
'try {',
'result = test();',
'} catch (e) {',
'result = e;',
'}',
'print(result === true ? "' + ALL_TESTS_PASSED + '" : result);',
)
)
TEST_DEV_ONLY_RX = re.compile( r'//#BEGIN_TEST_DEV_ONLY[\s\S]*?//#END_TEST_DEV_ONLY' )
TEST_JS_EXT = '.test.js'
UTF8 = 'utf-8'
VISITED = 'visited'