1425bb815Sopenharmony_ci# Copyright JS Foundation and other contributors, http://js.foundation
2425bb815Sopenharmony_ci#
3425bb815Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
4425bb815Sopenharmony_ci# you may not use this file except in compliance with the License.
5425bb815Sopenharmony_ci# You may obtain a copy of the License at
6425bb815Sopenharmony_ci#
7425bb815Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
8425bb815Sopenharmony_ci#
9425bb815Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
10425bb815Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS
11425bb815Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12425bb815Sopenharmony_ci# See the License for the specific language governing permissions and
13425bb815Sopenharmony_ci# limitations under the License.
14425bb815Sopenharmony_ci
15425bb815Sopenharmony_ci
16425bb815Sopenharmony_ciLICENSE = """/* Copyright JS Foundation and other contributors, http://js.foundation
17425bb815Sopenharmony_ci *
18425bb815Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
19425bb815Sopenharmony_ci * you may not use this file except in compliance with the License.
20425bb815Sopenharmony_ci * You may obtain a copy of the License at
21425bb815Sopenharmony_ci *
22425bb815Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
23425bb815Sopenharmony_ci *
24425bb815Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
25425bb815Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS
26425bb815Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
27425bb815Sopenharmony_ci * See the License for the specific language governing permissions and
28425bb815Sopenharmony_ci * limitations under the License.
29425bb815Sopenharmony_ci */"""
30425bb815Sopenharmony_ci
31425bb815Sopenharmony_ci
32425bb815Sopenharmony_cidef format_code(code, indent, digit_number=4):
33425bb815Sopenharmony_ci    def regroup(list_to_group, num):
34425bb815Sopenharmony_ci        return [list_to_group[i:i+num] for i in range(0, len(list_to_group), num)]
35425bb815Sopenharmony_ci
36425bb815Sopenharmony_ci    def hex_format(char, digit_number):
37425bb815Sopenharmony_ci        if isinstance(char, str):
38425bb815Sopenharmony_ci            char = ord(char)
39425bb815Sopenharmony_ci
40425bb815Sopenharmony_ci        return ("0x{:0%sx}" % digit_number).format(char)
41425bb815Sopenharmony_ci
42425bb815Sopenharmony_ci    lines = []
43425bb815Sopenharmony_ci
44425bb815Sopenharmony_ci    nums_per_line = 10
45425bb815Sopenharmony_ci    width = nums_per_line * (digit_number + 4)
46425bb815Sopenharmony_ci    # convert all characters to hex format
47425bb815Sopenharmony_ci    converted_code = [hex_format(char, digit_number) for char in code]
48425bb815Sopenharmony_ci    # 10 hex number per line
49425bb815Sopenharmony_ci    for line in regroup(", ".join(converted_code), width):
50425bb815Sopenharmony_ci        lines.append(('  ' * indent) + line.strip())
51425bb815Sopenharmony_ci    return "\n".join(lines)
52