| Index: third_party/harfbuzz/contrib/tables/unicode_parse_common.py
|
| diff --git a/third_party/harfbuzz/contrib/tables/unicode_parse_common.py b/third_party/harfbuzz/contrib/tables/unicode_parse_common.py
|
| deleted file mode 100644
|
| index ac26ecae3d935de1926ed531abb263102527a548..0000000000000000000000000000000000000000
|
| --- a/third_party/harfbuzz/contrib/tables/unicode_parse_common.py
|
| +++ /dev/null
|
| @@ -1,70 +0,0 @@
|
| -def lines_get(f):
|
| - '''Parse a file like object, removing comments and returning a list of
|
| - lines.'''
|
| - def cut_comment(line):
|
| - first_hash = line.find('#')
|
| - if first_hash == -1:
|
| - return line
|
| - return line[:first_hash]
|
| -
|
| - return [x for x in [cut_comment(x[:-1]) for x in f.readlines()] if len(x)]
|
| -
|
| -def line_split(line):
|
| - '''Split a line based on a semicolon separator.'''
|
| - def normalise(word):
|
| - return word.lstrip().rstrip()
|
| - return [normalise(x) for x in line.split(';')]
|
| -
|
| -def codepoints_parse(token):
|
| - '''Parse a Unicode style code-point range. Return either a single value or a
|
| - tuple of (start, end) for a range of code-points.'''
|
| - def fromHex(token):
|
| - return int(token, 16)
|
| - parts = token.split('..')
|
| - if len(parts) == 2:
|
| - return (fromHex(parts[0]), fromHex(parts[1]))
|
| - elif len(parts) == 1:
|
| - return fromHex(parts[0])
|
| - else:
|
| - raise ValueError(token)
|
| -
|
| -def unicode_file_parse(input, map, default_value = None):
|
| - '''Parse a file like object, @input where the first column is a code-point
|
| - range and the second column is mapped via the given dict, @map.'''
|
| - ranges = []
|
| - tokens = [line_split(x) for x in lines_get(input)]
|
| - for line in tokens:
|
| - if len(line) == 2:
|
| - codepoints = codepoints_parse(line[0])
|
| - value = map[line[1]]
|
| - if value == default_value:
|
| - continue
|
| -
|
| - if type(codepoints) == int:
|
| - codepoints = (codepoints, codepoints)
|
| -
|
| - ranges.append((codepoints[0], codepoints[1], value))
|
| - else:
|
| - raise ValueError(line)
|
| -
|
| - return ranges
|
| -
|
| -def sort_and_merge(ranges):
|
| - '''Given a list of (start, end, value), merge elements where the ranges are
|
| - continuous and the values are the same.'''
|
| - output = []
|
| - ranges.sort()
|
| - current = None
|
| - for v in ranges:
|
| - if current is None:
|
| - current = v
|
| - continue
|
| - if current[1] + 1 == v[0] and current[2] == v[2]:
|
| - current = (current[0], v[1], v[2])
|
| - else:
|
| - output.append(current)
|
| - current = v
|
| - if current is not None:
|
| - output.append(current)
|
| -
|
| - return output
|
|
|