diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2009-10-07 12:56:55 +0200 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2009-10-07 15:02:42 +0200 |
commit | be2ca1ec8084cc7f5054795b3526d924f5acab3b (patch) | |
tree | 91adf6318977e25b11ac90d305e6bef2c139e5ad /tools/js2c.py | |
parent | e982349b169d35cecb5219de3020ce728f72ad4a (diff) | |
download | android-node-v8-be2ca1ec8084cc7f5054795b3526d924f5acab3b.tar.gz android-node-v8-be2ca1ec8084cc7f5054795b3526d924f5acab3b.tar.bz2 android-node-v8-be2ca1ec8084cc7f5054795b3526d924f5acab3b.zip |
Fix build.
- Add -f flag to rm on make clean.
- Use old jsmin - the new one seems to be broken.
Diffstat (limited to 'tools/js2c.py')
-rwxr-xr-x | tools/js2c.py | 77 |
1 files changed, 27 insertions, 50 deletions
diff --git a/tools/js2c.py b/tools/js2c.py index 48abe9c500..312626101b 100755 --- a/tools/js2c.py +++ b/tools/js2c.py @@ -45,10 +45,19 @@ def ToCArray(lines): return ", ".join(result) -def RemoveCommentsAndTrailingWhitespace(lines): - lines = re.sub(r'//.*\n', '\n', lines) # end-of-line comments - lines = re.sub(re.compile(r'/\*.*?\*/', re.DOTALL), '', lines) # comments. - lines = re.sub(r'\s+\n+', '\n', lines) # trailing whitespace +def CompressScript(lines, do_jsmin): + # If we're not expecting this code to be user visible, we can run it through + # a more aggressive minifier. + if do_jsmin: + return jsmin.jsmin(lines) + + # Remove stuff from the source that we don't want to appear when + # people print the source code using Function.prototype.toString(). + # Note that we could easily compress the scripts mode but don't + # since we want it to remain readable. + #lines = re.sub('//.*\n', '\n', lines) # end-of-line comments + #lines = re.sub(re.compile(r'/\*.*?\*/', re.DOTALL), '', lines) # comments. + #lines = re.sub('\s+\n+', '\n', lines) # trailing whitespace return lines @@ -87,22 +96,6 @@ def ParseValue(string): return string -EVAL_PATTERN = re.compile(r'\beval\s*\('); -WITH_PATTERN = re.compile(r'\bwith\s*\('); - - -def Validate(lines, file): - lines = RemoveCommentsAndTrailingWhitespace(lines) - # Because of simplified context setup, eval and with is not - # allowed in the natives files. - eval_match = EVAL_PATTERN.search(lines) - if eval_match: - raise ("Eval disallowed in natives: %s" % file) - with_match = WITH_PATTERN.search(lines) - if with_match: - raise ("With statements disallowed in natives: %s" % file) - - def ExpandConstants(lines, constants): for key, value in constants.items(): lines = lines.replace(key, str(value)) @@ -162,9 +155,9 @@ class PythonMacro: args.append(mapping[arg]) return str(self.fun(*args)) -CONST_PATTERN = re.compile(r'^const\s+([a-zA-Z0-9_]+)\s*=\s*([^;]*);$') -MACRO_PATTERN = re.compile(r'^macro\s+([a-zA-Z0-9_]+)\s*\(([^)]*)\)\s*=\s*([^;]*);$') -PYTHON_MACRO_PATTERN = re.compile(r'^python\s+macro\s+([a-zA-Z0-9_]+)\s*\(([^)]*)\)\s*=\s*([^;]*);$') +CONST_PATTERN = re.compile('^const\s+([a-zA-Z0-9_]+)\s*=\s*([^;]*);$') +MACRO_PATTERN = re.compile('^macro\s+([a-zA-Z0-9_]+)\s*\(([^)]*)\)\s*=\s*([^;]*);$') +PYTHON_MACRO_PATTERN = re.compile('^python\s+macro\s+([a-zA-Z0-9_]+)\s*\(([^)]*)\)\s*=\s*([^;]*);$') def ReadMacros(lines): constants = { } @@ -212,7 +205,7 @@ namespace node { SOURCE_DECLARATION = """\ - static const char %(id)s[] = { %(data)s }; + static const char native_%(id)s[] = { %(data)s }; """ @@ -230,7 +223,7 @@ GET_DELAY_SCRIPT_NAME_CASE = """\ if (index == %(i)i) return Vector<const char>("%(name)s", %(length)i); """ -def JS2C(source, target, env): +def JS2C(source, target): ids = [] delay_ids = [] modules = [] @@ -245,20 +238,16 @@ def JS2C(source, target, env): # Build source code lines source_lines = [ ] - - minifier = jsmin.JavaScriptMinifier() - source_lines_empty = [] - for module in modules: - filename = str(module) - delay = filename.endswith('-delay.js') - lines = ReadFile(filename) + for s in modules: + delay = str(s).endswith('-delay.js') + lines = ReadFile(str(s)) + do_jsmin = lines.find('// jsminify this file, js2c: jsmin') != -1 lines = ExpandConstants(lines, consts) lines = ExpandMacros(lines, macros) - Validate(lines, filename) - lines = minifier.JSMinify(lines) + lines = CompressScript(lines, do_jsmin) data = ToCArray(lines) - id = (os.path.split(filename)[1])[:-3] + id = (os.path.split(str(s))[1])[:-3] if delay: id = id[:-6] if delay: delay_ids.append((id, len(lines))) @@ -266,7 +255,7 @@ def JS2C(source, target, env): ids.append((id, len(lines))) source_lines.append(SOURCE_DECLARATION % { 'id': id, 'data': data }) source_lines_empty.append(SOURCE_DECLARATION % { 'id': id, 'data': 0 }) - + # Build delay support functions get_index_cases = [ ] get_script_source_cases = [ ] @@ -311,8 +300,7 @@ def JS2C(source, target, env): 'source_lines': "\n".join(source_lines), 'get_index_cases': "".join(get_index_cases), 'get_script_source_cases': "".join(get_script_source_cases), - 'get_script_name_cases': "".join(get_script_name_cases), - 'type': env['TYPE'] + 'get_script_name_cases': "".join(get_script_name_cases) }) output.close() @@ -324,17 +312,6 @@ def JS2C(source, target, env): 'source_lines': "\n".join(source_lines_empty), 'get_index_cases': "".join(get_index_cases), 'get_script_source_cases': "".join(get_script_source_cases), - 'get_script_name_cases': "".join(get_script_name_cases), - 'type': env['TYPE'] + 'get_script_name_cases': "".join(get_script_name_cases) }) output.close() - -def main(): - natives = sys.argv[1] - natives_empty = sys.argv[2] - type = sys.argv[3] - source_files = sys.argv[4:] - JS2C(source_files, [natives, natives_empty], { 'TYPE': type }) - -if __name__ == "__main__": - main() |