tools/unicode_dbl_width: do not redefine range

This commit is contained in:
Boris Faure 2020-07-06 19:40:20 +02:00
parent 8c970b8804
commit 7d1536c8e9
Signed by: borisfaure
GPG Key ID: 35C0410516166BE8
1 changed files with 15 additions and 16 deletions

View File

@ -10,7 +10,7 @@ import argparse
from collections import namedtuple from collections import namedtuple
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
Range = namedtuple('range', ['width', 'start', 'end']) URange = namedtuple('unicode_range', ['width', 'start', 'end'])
def get_ranges(xmlfile, emoji_as_wide): def get_ranges(xmlfile, emoji_as_wide):
tree = ET.parse(xmlfile) tree = ET.parse(xmlfile)
@ -19,14 +19,13 @@ def get_ranges(xmlfile, emoji_as_wide):
chars = repertoire.findall("{http://www.unicode.org/ns/2003/ucd/1.0}char") chars = repertoire.findall("{http://www.unicode.org/ns/2003/ucd/1.0}char")
ranges = [] ranges = []
range = Range('N', 0, 0) r = URange('N', 0, 0)
for c in chars: for c in chars:
ea = c.get('ea') ea = c.get('ea')
if ea in ('Na', 'H'): if ea in ('Na', 'H'):
ea = 'N' ea = 'N'
if ea in ('F'): if ea in ('F'):
ea = 'W' ea = 'W'
assert ea in ('N', 'A', 'W')
cp = c.get('cp') cp = c.get('cp')
if not cp: if not cp:
continue continue
@ -36,26 +35,26 @@ def get_ranges(xmlfile, emoji_as_wide):
ea = 'W' ea = 'W'
cp = int(cp, 16) cp = int(cp, 16)
if ea != range[0]: if ea != r[0]:
ranges.append(range) ranges.append(r)
range = Range(ea, cp, cp) r = URange(ea, cp, cp)
else: else:
range = range._replace(end=cp) r = r._replace(end=cp)
ranges.append(range) ranges.append(r)
return ranges return ranges
def merge_ranges(ranges, is_same_width): def merge_ranges(ranges, is_same_width):
res = [] res = []
range = ranges[0] cur_range = ranges[0]
for r in ranges: for r in ranges:
if is_same_width(r, range): if is_same_width(r, cur_range):
range = range._replace(end=r.end) cur_range = cur_range._replace(end=r.end)
else: else:
res.append(range) res.append(cur_range)
range = r cur_range = r
res.append(range) res.append(cur_range)
return res return res
def skip_ranges(ranges, width_skipped): def skip_ranges(ranges, width_skipped):
@ -65,7 +64,7 @@ def skip_ranges(ranges, width_skipped):
res.append(r) res.append(r)
return res return res
def gen_header(range, file_header): def gen_header(cur_range, file_header):
file_header.write( file_header.write(
"""/* XXX: Code generated by tool unicode_dbl_width.py */ """/* XXX: Code generated by tool unicode_dbl_width.py */
#ifndef _TERMPTY_DBL_H__ #ifndef _TERMPTY_DBL_H__
@ -79,7 +78,7 @@ _termpty_is_dblwidth_get(const Termpty *ty, const Eina_Unicode g)
{ {
/* optimize for latin1 non-ambiguous */ /* optimize for latin1 non-ambiguous */
""") """)
file_header.write(f" if (g <= 0x{range.end:X})") file_header.write(f" if (g <= 0x{cur_range.end:X})")
file_header.write( file_header.write(
""" """
return EINA_FALSE; return EINA_FALSE;