Browse Source

tools/ucd.py: parse CodePoint/CodeRange entries to their numerical values.

master
Reece H. Dunn 12 years ago
parent
commit
a77e5a142c
1 changed files with 11 additions and 4 deletions
  1. 11
    4
      tools/ucd.py

+ 11
- 4
tools/ucd.py View File



class CodePoint: class CodePoint:
def __init__(self, x): def __init__(self, x):
self.codepoint = x
self.codepoint = int(x, 16)


def __repr__(self): def __repr__(self):
return self.codepoint
return '%04X' % self.codepoint


def __str__(self): def __str__(self):
return self.codepoint
return '%04X' % self.codepoint


class CodeRange: class CodeRange:
def __init__(self, x): def __init__(self, x):
self.first, self.last = x.split('..')
f, l = x.split('..')
self.first = CodePoint(f)
self.last = CodePoint(l)


def __repr__(self): def __repr__(self):
return '%s..%s' % (self.first, self.last) return '%s..%s' % (self.first, self.last)
def __str__(self): def __str__(self):
return '%s..%s' % (self.first, self.last) return '%s..%s' % (self.first, self.last)


def size(self):
return self.last.codepoint - self.first.codepoint + 1

def codepoint(x): def codepoint(x):
if '..' in x: if '..' in x:
return CodeRange(x) return CodeRange(x)
if ' ' in x: if ' ' in x:
return [CodePoint(c) for c in x.split()] return [CodePoint(c) for c in x.split()]
if x == '':
return None
return CodePoint(x) return CodePoint(x)


def string(x): def string(x):

Loading…
Cancel
Save