summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/Scripts')
-rw-r--r--Source/JavaScriptCore/Scripts/generate-js-builtins.py16
-rw-r--r--Source/JavaScriptCore/Scripts/jsmin.py22
-rwxr-xr-xSource/JavaScriptCore/Scripts/make-js-file-arrays.py57
-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 *