diff options
Diffstat (limited to 'Source/JavaScriptCore/Scripts')
| -rw-r--r-- | Source/JavaScriptCore/Scripts/generate-js-builtins.py | 16 | ||||
| -rw-r--r-- | Source/JavaScriptCore/Scripts/jsmin.py | 22 | ||||
| -rwxr-xr-x | Source/JavaScriptCore/Scripts/make-js-file-arrays.py | 57 | ||||
| -rw-r--r-- | Source/JavaScriptCore/Scripts/wkbuiltins/__init__.py (renamed from Source/JavaScriptCore/Scripts/builtins/__init__.py) | 2 | ||||
| -rw-r--r-- | Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_header.py (renamed from Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py) | 0 | ||||
| -rw-r--r-- | Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_implementation.py (renamed from Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py) | 0 | ||||
| -rw-r--r-- | Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_separate_header.py (renamed from Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py) | 0 | ||||
| -rw-r--r-- | Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_separate_implementation.py (renamed from Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py) | 0 | ||||
| -rw-r--r-- | Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generator.py (renamed from Source/JavaScriptCore/Scripts/builtins/builtins_generator.py) | 0 | ||||
| -rw-r--r--[-rwxr-xr-x] | Source/JavaScriptCore/Scripts/wkbuiltins/builtins_model.py (renamed from Source/JavaScriptCore/Scripts/builtins/builtins_model.py) | 7 | ||||
| -rw-r--r-- | Source/JavaScriptCore/Scripts/wkbuiltins/builtins_templates.py (renamed from Source/JavaScriptCore/Scripts/builtins/builtins_templates.py) | 0 | ||||
| -rw-r--r-- | Source/JavaScriptCore/Scripts/wkbuiltins/wkbuiltins.py (renamed from Source/JavaScriptCore/Scripts/builtins/builtins.py) | 2 |
12 files changed, 66 insertions, 40 deletions
diff --git a/Source/JavaScriptCore/Scripts/generate-js-builtins.py b/Source/JavaScriptCore/Scripts/generate-js-builtins.py index 554a72ccc..7a203ff08 100644 --- a/Source/JavaScriptCore/Scripts/generate-js-builtins.py +++ b/Source/JavaScriptCore/Scripts/generate-js-builtins.py @@ -31,16 +31,22 @@ import fnmatch import logging import optparse import os +import sys logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.ERROR) log = logging.getLogger('global') from lazywriter import LazyFileWriter -import builtins -from builtins import * +from wkbuiltins import * +def do_open(file, mode): + if sys.version_info.major == 2: + return open(file, mode) + else: + return open(file, mode, encoding="UTF-8") + def generate_bindings_for_builtins_files(builtins_files=[], output_path=None, concatenate_output=False, @@ -53,7 +59,7 @@ def generate_bindings_for_builtins_files(builtins_files=[], model = BuiltinsCollection(framework_name=framework_name) for filepath in builtins_files: - with open(filepath, "r") as file: + with do_open(filepath, "r") as file: file_text = file.read() file_name = os.path.basename(filepath) @@ -132,7 +138,7 @@ if __name__ == '__main__': for filepath in os.listdir(arg_options.input_directory): input_filepaths.append(os.path.join(arg_options.input_directory, filepath)) - input_filepaths = filter(lambda name: fnmatch.fnmatch(name, '*.js'), input_filepaths) + input_filepaths = sorted([name for name in input_filepaths if fnmatch.fnmatch(name, '*.js')]) options = { 'output_path': arg_options.output_directory, @@ -144,7 +150,7 @@ if __name__ == '__main__': log.debug("Generating code for builtins.") log.debug("Parsed options:") - for option, value in options.items(): + for option, value in list(options.items()): log.debug(" %s: %s" % (option, value)) log.debug("") log.debug("Input files:") diff --git a/Source/JavaScriptCore/Scripts/jsmin.py b/Source/JavaScriptCore/Scripts/jsmin.py index 372418b4d..7f110c9d3 100644 --- a/Source/JavaScriptCore/Scripts/jsmin.py +++ b/Source/JavaScriptCore/Scripts/jsmin.py @@ -28,12 +28,14 @@ import sys is_3 = sys.version_info >= (3, 0) if is_3: import io + python_text_type = str else: import StringIO try: import cStringIO except ImportError: cStringIO = None + python_text_type = basestring __all__ = ['jsmin', 'JavascriptMinify'] @@ -79,14 +81,18 @@ class JavascriptMinify(object): def write(char): # all of this is to support literal regular expressions. # sigh - if char in 'return': + if str(char) in 'return': self.return_buf += char self.is_return = self.return_buf == 'return' self.outs.write(char) if self.is_return: self.return_buf = '' - read = self.ins.read + def read(n): + char = self.ins.read(n) + if not isinstance(char, python_text_type): + raise ValueError("ERROR: The script jsmin.py can only handle text input, but it received input of type %s" % type(char)) + return char space_strings = "abcdefghijklmnopqrstuvwxyz"\ "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$\\" @@ -118,8 +124,8 @@ class JavascriptMinify(object): write(previous) elif not previous: return - elif previous >= '!': - if previous in "'\"": + elif str(previous) >= "!": + if str(previous) in "'\"": in_quote = previous write(previous) previous_non_space = previous @@ -166,7 +172,7 @@ class JavascriptMinify(object): if numslashes % 2 == 0: in_quote = '' write(''.join(quote_buf)) - elif next1 in '\r\n': + elif str(next1) in '\r\n': if previous_non_space in newlineend_strings \ or previous_non_space > '~': while 1: @@ -179,7 +185,7 @@ class JavascriptMinify(object): or next2 > '~' or next2 == '/': do_newline = True break - elif next1 < '!' and not in_re: + elif str(next1) < '!' and not in_re: if (previous_non_space in space_strings \ or previous_non_space > '~') \ and (next2 in space_strings or next2 > '~'): @@ -217,14 +223,14 @@ class JavascriptMinify(object): do_newline = False write(next1) - if not in_re and next1 in "'\"`": + if not in_re and str(next1) in "'\"`": in_quote = next1 quote_buf = [] previous = next1 next1 = next2 - if previous >= '!': + if str(previous) >= '!': previous_non_space = previous if previous == '\\': diff --git a/Source/JavaScriptCore/Scripts/make-js-file-arrays.py b/Source/JavaScriptCore/Scripts/make-js-file-arrays.py index 65056646a..d9ffb602e 100755 --- a/Source/JavaScriptCore/Scripts/make-js-file-arrays.py +++ b/Source/JavaScriptCore/Scripts/make-js-file-arrays.py @@ -21,11 +21,13 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +from __future__ import print_function import io import os from optparse import OptionParser -from StringIO import StringIO -from jsmin import JavascriptMinify +import sys +from jsmin import jsmin +is_3 = sys.version_info >= (3, 0) def stringifyCodepoint(code): @@ -36,7 +38,7 @@ def stringifyCodepoint(code): def chunk(list, chunkSize): - for i in xrange(0, len(list), chunkSize): + for i in range(0, len(list), chunkSize): yield list[i:i + chunkSize] @@ -46,11 +48,11 @@ def main(): parser.add_option('-n', '--namespace', help='Namespace to use') (options, arguments) = parser.parse_args() if not options.namespace: - print 'Error: must provide a namespace' + print('Error: must provide a namespace') parser.print_usage() exit(-1) if len(arguments) < 3: - print 'Error: must provide at least 3 arguments' + print('Error: must provide at least 3 arguments') parser.print_usage() exit(-1) @@ -60,38 +62,47 @@ def main(): inputPaths = arguments[2:] headerFile = open(headerPath, 'w') - print >> headerFile, 'namespace {0:s} {{'.format(namespace) + print('namespace {0:s} {{'.format(namespace), file=headerFile) sourceFile = open(sourcePath, 'w') - print >> sourceFile, '#include "{0:s}"'.format(os.path.basename(headerPath)) - print >> sourceFile, 'namespace {0:s} {{'.format(namespace) - - jsm = JavascriptMinify() + print('#include "{0:s}"'.format(os.path.basename(headerPath)), file=sourceFile) + print('namespace {0:s} {{'.format(namespace), file=sourceFile) for inputFileName in inputPaths: - inputStream = io.FileIO(inputFileName) - outputStream = StringIO() + + if is_3: + inputStream = io.open(inputFileName, encoding='utf-8') + else: + inputStream = io.FileIO(inputFileName) + + data = inputStream.read() if not options.no_minify: - jsm.minify(inputStream, outputStream) - characters = outputStream.getvalue() + characters = jsmin(data) else: - characters = inputStream.read() + characters = data + + if is_3: + codepoints = bytearray(characters, encoding='utf-8') + else: + codepoints = list(map(ord, characters)) + + # Use the size of codepoints instead of the characters + # because UTF-8 characters may need more than one byte. + size = len(codepoints) - size = len(characters) variableName = os.path.splitext(os.path.basename(inputFileName))[0] - print >> headerFile, 'extern const char {0:s}JavaScript[{1:d}];'.format(variableName, size) - print >> sourceFile, 'const char {0:s}JavaScript[{1:d}] = {{'.format(variableName, size) + print('extern const char {0:s}JavaScript[{1:d}];'.format(variableName, size), file=headerFile) + print('const char {0:s}JavaScript[{1:d}] = {{'.format(variableName, size), file=sourceFile) - codepoints = map(ord, characters) for codepointChunk in chunk(codepoints, 16): - print >> sourceFile, ' {0:s},'.format(','.join(map(stringifyCodepoint, codepointChunk))) + print(' {0:s},'.format(','.join(map(stringifyCodepoint, codepointChunk))), file=sourceFile) - print >> sourceFile, '};' + print('};', file=sourceFile) - print >> headerFile, '}} // namespace {0:s}'.format(namespace) - print >> sourceFile, '}} // namespace {0:s}'.format(namespace) + print('}} // namespace {0:s}'.format(namespace), file=headerFile) + print('}} // namespace {0:s}'.format(namespace), file=sourceFile) if __name__ == '__main__': main() diff --git a/Source/JavaScriptCore/Scripts/builtins/__init__.py b/Source/JavaScriptCore/Scripts/wkbuiltins/__init__.py index fdfcba981..ffa849ea5 100644 --- a/Source/JavaScriptCore/Scripts/builtins/__init__.py +++ b/Source/JavaScriptCore/Scripts/wkbuiltins/__init__.py @@ -1,3 +1,3 @@ # Required for Python to search this directory for module files -from builtins import * +from .wkbuiltins import * diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_header.py index 891bd3cb4..891bd3cb4 100644 --- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_header.py +++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_header.py diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_implementation.py index 094434b64..094434b64 100644 --- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py +++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_implementation.py diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_separate_header.py index b72a94bfe..b72a94bfe 100644 --- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py +++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_separate_header.py diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_separate_implementation.py index 0443975da..0443975da 100644 --- a/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py +++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_separate_implementation.py diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_generator.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generator.py index 21ac4c1d9..21ac4c1d9 100644 --- a/Source/JavaScriptCore/Scripts/builtins/builtins_generator.py +++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generator.py diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_model.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_model.py index cdd5f9003..47e33e6a8 100755..100644 --- a/Source/JavaScriptCore/Scripts/builtins/builtins_model.py +++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_model.py @@ -123,6 +123,9 @@ class BuiltinFunction: return interface + def __lt__(self, other): + return self.function_name < other.function_name + class BuiltinsCollection: def __init__(self, framework_name): @@ -178,7 +181,7 @@ class BuiltinsCollection: result = [] - for owner, years in owner_to_years.items(): + for owner, years in list(owner_to_years.items()): sorted_years = list(years) sorted_years.sort() result.append("%s %s" % (', '.join(sorted_years), owner)) @@ -271,4 +274,4 @@ class BuiltinsCollection: functionBounds.append((start, end)) functionStrings = [text[start:end].strip() for (start, end) in functionBounds] - return map(BuiltinFunction.fromString, functionStrings) + return list(map(BuiltinFunction.fromString, functionStrings)) diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins_templates.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_templates.py index 67cdd5df7..67cdd5df7 100644 --- a/Source/JavaScriptCore/Scripts/builtins/builtins_templates.py +++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_templates.py diff --git a/Source/JavaScriptCore/Scripts/builtins/builtins.py b/Source/JavaScriptCore/Scripts/wkbuiltins/wkbuiltins.py index 9349eeef6..13216b3b5 100644 --- a/Source/JavaScriptCore/Scripts/builtins/builtins.py +++ b/Source/JavaScriptCore/Scripts/wkbuiltins/wkbuiltins.py @@ -1,4 +1,4 @@ -# This file is used to simulate the builtins/ directory when generate-js-builtins.py +# This file is used to simulate the wkbuiltins/ directory when generate-js-builtins.py # is run from JavaScriptCore framework's private headers directory, which is flattened. from builtins_model import * |
