Merge lit-unicode-*.inc.h-related generator scripts (#1767)
The `conversions` and `ranges` files had separate generators, which shared some functionality through a 3rd python module, and were quite similar to each other -- but also had some differences. Moreover, as they were separate scripts, nothing forced to keep the outputs in sync (to re-generate them at the same time from the same inputs). To fix these maintainability issues, this patch - merges the two python files and part of the 3rd utility module into a single script while keeping the existing functionality, - names the new file `gen-unicode.py` to align better with other generator script in `tools`, and - adds some extra documentation how to retrieve the input files (as they are not part of the repository). The refactoring affected the utility module as well, so this patch also - renames `c_source_helper.py` to `gen_c_source.py` (again, for naming consistency), - reorganizes some of its functions not to export module-local helper functions, and - adapts `js2c.py`, as it also uses this utility module. JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# Copyright JS Foundation and other contributors, http://js.foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
|
||||
LICENSE = """/* Copyright JS Foundation and other contributors, http://js.foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/"""
|
||||
|
||||
|
||||
def format_code(code, indent, digit_number=4):
|
||||
def regroup(list_to_group, num):
|
||||
return [list_to_group[i:i+num] for i in range(0, len(list_to_group), num)]
|
||||
|
||||
def hex_format(char, digit_number):
|
||||
if isinstance(char, str):
|
||||
char = ord(char)
|
||||
|
||||
return ("0x{:0%sx}" % digit_number).format(char)
|
||||
|
||||
lines = []
|
||||
|
||||
nums_per_line = 10
|
||||
width = nums_per_line * (digit_number + 4)
|
||||
# convert all characters to hex format
|
||||
converted_code = [hex_format(char, digit_number) for char in code]
|
||||
# 10 hex number per line
|
||||
for line in regroup(", ".join(converted_code), width):
|
||||
lines.append((' ' * indent) + line.strip())
|
||||
return "\n".join(lines)
|
||||
Reference in New Issue
Block a user