aboutsummaryrefslogtreecommitdiff
path: root/src/make_unicode_property_data.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/make_unicode_property_data.py')
-rwxr-xr-xsrc/make_unicode_property_data.py82
1 files changed, 41 insertions, 41 deletions
diff --git a/src/make_unicode_property_data.py b/src/make_unicode_property_data.py
index d30a92b..11c453b 100755
--- a/src/make_unicode_property_data.py
+++ b/src/make_unicode_property_data.py
@@ -1,7 +1,7 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# make_unicode_property_data.py
-# Copyright (c) 2016-2022 K.Kosako
+# Copyright (c) 2016-2023 K.Kosako
import sys
import re
@@ -46,31 +46,31 @@ def fix_block_name(name):
def print_ranges(ranges):
for (start, end) in ranges:
- print "0x%06x, 0x%06x" % (start, end)
+ print("0x%06x, 0x%06x" % (start, end))
- print len(ranges)
+ print(len(ranges))
def print_prop_and_index(prop, i):
- print "%-35s %3d" % (prop + ',', i)
+ print("%-35s %3d" % (prop + ',', i))
PropIndex[prop] = i
PRINT_CACHE = { }
def print_property(prop, data, desc):
- print ''
- print "/* PROPERTY: '%s': %s */" % (prop, desc)
+ print('')
+ print("/* PROPERTY: '%s': %s */" % (prop, desc))
prev_prop = dic_find_by_value(PRINT_CACHE, data)
if prev_prop is not None:
- print "#define CR_%s CR_%s" % (prop, prev_prop)
+ print("#define CR_%s CR_%s" % (prop, prev_prop))
else:
PRINT_CACHE[prop] = data
- print "static const OnigCodePoint"
- print "CR_%s[] = { %d," % (prop, len(data))
+ print("static const OnigCodePoint")
+ print("CR_%s[] = { %d," % (prop, len(data)))
for (start, end) in data:
- print "0x%04x, 0x%04x," % (start, end)
+ print("0x%04x, 0x%04x," % (start, end))
- print "}; /* END of CR_%s */" % prop
+ print("}; /* END of CR_%s */" % prop)
def dic_find_by_value(dic, v):
@@ -100,7 +100,7 @@ def normalize_ranges(in_ranges, sort=False):
r = []
prev = None
for (start, end) in ranges:
- if prev >= start - 1:
+ if prev is not None and prev >= start - 1:
(pstart, pend) = r.pop()
end = max(pend, end)
start = pstart
@@ -175,14 +175,14 @@ def merge_dic(to_dic, from_dic):
from_keys = from_dic.keys()
common = list(set(to_keys) & set(from_keys))
if len(common) != 0:
- print >> sys.stderr, "merge_dic: collision: %s" % sorted(common)
+ print("merge_dic: collision: %s" % sorted(common), file=sys.stderr)
to_dic.update(from_dic)
def merge_props(to_props, from_props):
common = list(set(to_props) & set(from_props))
if len(common) != 0:
- print >> sys.stderr, "merge_props: collision: %s" % sorted(common)
+ print("merge_props: collision: %s" % sorted(common), file=sys.stderr)
to_props.extend(from_props)
@@ -406,7 +406,7 @@ def set_max_prop_name(name):
def entry_prop_name(name, index):
set_max_prop_name(name)
if OUTPUT_LIST_MODE and index >= len(POSIX_LIST):
- print >> UPF, "%s" % (name)
+ print("%s" % (name), file=UPF)
def entry_and_print_prop_and_index(name, index):
entry_prop_name(name, index)
@@ -426,7 +426,7 @@ argc = len(argv)
COPYRIGHT = '''
/*-
- * Copyright (c) 2016-2022 K.Kosako
+ * Copyright (c) 2016-2023 K.Kosako
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -462,7 +462,7 @@ for i in range(1, argc):
elif arg == '-gc':
INCLUDE_GRAPHEME_CLUSTER_DATA = True
else:
- print >> sys.stderr, "Invalid argument: %s" % arg
+ print("Invalid argument: %s" % arg, file=sys.stderr)
OUTPUT_LIST_MODE = not(POSIX_ONLY)
@@ -519,9 +519,9 @@ PROPS = sorted(PROPS)
s = '''%{
/* Generated by make_unicode_property_data.py. */
'''
-print s
-print COPYRIGHT
-print ''
+print(s)
+print(COPYRIGHT)
+print('')
for prop in POSIX_LIST:
if prop == 'PosixPunct':
@@ -531,7 +531,7 @@ for prop in POSIX_LIST:
print_property(prop, DIC[prop], desc)
-print ''
+print('')
if not(POSIX_ONLY):
for prop in PROPS:
@@ -551,18 +551,18 @@ if not(POSIX_ONLY):
print_property(block, DIC[block], 'Block')
-print ''
-print "static const OnigCodePoint*\nconst CodeRanges[] = {"
+print('')
+print("static const OnigCodePoint*\nconst CodeRanges[] = {")
for prop in POSIX_LIST:
- print " CR_%s," % prop
+ print(" CR_%s," % prop)
if not(POSIX_ONLY):
for prop in PROPS:
- print " CR_%s," % prop
+ print(" CR_%s," % prop)
for prop in BLOCKS:
- print " CR_%s," % prop
+ print(" CR_%s," % prop)
s = '''};
@@ -585,8 +585,8 @@ if OUTPUT_LIST_MODE:
if EMOJI_VERSION_INFO[0] < 0:
raise RuntimeError("Emoji Version is not found")
- print >> UPF, "Unicode Properties (Unicode Version: %d.%d.%d, Emoji: %d.%d)" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2], EMOJI_VERSION_INFO[0], EMOJI_VERSION_INFO[1])
- print >> UPF, ''
+ print("Unicode Properties (Unicode Version: %d.%d.%d, Emoji: %d.%d)" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2], EMOJI_VERSION_INFO[0], EMOJI_VERSION_INFO[1]), file=UPF)
+ print('', file=UPF)
index = -1
for prop in POSIX_LIST:
@@ -598,16 +598,16 @@ if not(POSIX_ONLY):
index += 1
entry_and_print_prop_and_index(prop, index)
- NALIASES = map(lambda (k,v):(normalize_prop_name(k), k, v), ALIASES.items())
+ NALIASES = map(lambda x:(normalize_prop_name(x[0]), x[0], x[1]), ALIASES.items())
NALIASES = sorted(NALIASES)
for (nk, k, v) in NALIASES:
nv = normalize_prop_name(v)
if PropIndex.get(nk, None) is not None:
- print >> sys.stderr, "ALIASES: already exists: %s => %s" % (k, v)
+ print("ALIASES: already exists: %s => %s" % (k, v), file=sys.stderr)
continue
aindex = PropIndex.get(nv, None)
if aindex is None:
- #print >> sys.stderr, "ALIASES: value is not exist: %s => %s" % (k, v)
+ #print("ALIASES: value is not exist: %s => %s" % (k, v), file=sys.stderr)
continue
entry_prop_name(k, aindex)
@@ -617,26 +617,26 @@ if not(POSIX_ONLY):
index += 1
entry_and_print_prop_and_index(name, index)
-print '%%'
-print ''
+print('%%')
+print('')
if not(POSIX_ONLY):
if VERSION_INFO[0] < 0:
raise RuntimeError("Unicode Version is not found")
if EMOJI_VERSION_INFO[0] < 0:
raise RuntimeError("Emoji Version is not found")
- print "#define UNICODE_PROPERTY_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2])
- print "#define UNICODE_EMOJI_VERSION %02d%02d" % (EMOJI_VERSION_INFO[0], EMOJI_VERSION_INFO[1])
- print ''
+ print("#define UNICODE_PROPERTY_VERSION %02d%02d%02d" % (VERSION_INFO[0], VERSION_INFO[1], VERSION_INFO[2]))
+ print("#define UNICODE_EMOJI_VERSION %02d%02d" % (EMOJI_VERSION_INFO[0], EMOJI_VERSION_INFO[1]))
+ print('')
-print "#define PROPERTY_NAME_MAX_SIZE %d" % (PROPERTY_NAME_MAX_LEN + 10)
-print "#define CODE_RANGES_NUM %d" % (index + 1)
+print("#define PROPERTY_NAME_MAX_SIZE %d" % (PROPERTY_NAME_MAX_LEN + 10))
+print("#define CODE_RANGES_NUM %d" % (index + 1))
index_props = make_reverse_dic(PropIndex)
-print ''
+print('')
for i in range(index + 1):
for p in index_props[i]:
- print "#define PROP_INDEX_%s %d" % (p.upper(), i)
+ print("#define PROP_INDEX_%s %d" % (p.upper(), i))
if OUTPUT_LIST_MODE:
UPF.close()