tools/unicode_dbl_width: do not redefine range
This commit is contained in:
parent
8c970b8804
commit
7d1536c8e9
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue