| |
| |
| |
| |
| |
|
|
| import sys |
|
|
| def normalize(s:str, rule=0): |
|
|
| if rule == 0: |
| s = s.replace("\r", "") |
| s = s.replace("\n", "") |
| s = s.replace(" ", "") |
| s = s.replace("\t", "") |
| return s.upper() |
| else: |
| raise NotImplementedError |
|
|
|
|
| class Relation(object): |
|
|
| def __init__(self, from_text, to_text, direction, from_id=0, to_id=0, no_blanks=0): |
| self.from_text = from_text |
| self.to_text = to_text |
| self.direction = direction |
| self.no_blanks = no_blanks |
| self.from_id = from_id |
| self.to_id = to_id |
| |
| def __eq__(self, rl): |
| this_ft = normalize(self.from_text) |
| this_tt = normalize(self.to_text) |
| rl_ft = normalize(rl.from_text) |
| rl_tt = normalize(rl.to_text) |
| if len(this_ft) == 0 or len(this_tt) == 0 or \ |
| len(rl_ft) == 0 or len(rl_tt) == 0: |
| print("Warning: Text comparison of 0-length strings after normalization", |
| file=sys.stderr) |
| |
| return this_ft == rl_ft and this_tt == rl_tt and \ |
| self.direction == rl.direction and self.no_blanks == rl.no_blanks |
| |
| def equal(self, rl, cmp_blank=True): |
| this_ft = normalize(self.from_text) |
| this_tt = normalize(self.to_text) |
| rl_ft = normalize(rl.from_text) |
| rl_tt = normalize(rl.to_text) |
| if len(this_ft) == 0 or len(this_tt) == 0 or \ |
| len(rl_ft) == 0 or len(rl_tt) == 0: |
| print("Warning: Text comparison of 0-length strings after normalization", |
| file=sys.stderr) |
|
|
| return this_ft == rl_ft and this_tt == rl_tt and \ |
| self.direction == rl.direction and \ |
| (self.no_blanks == rl.no_blanks if cmp_blank else True) |
| |
| def __str__(self): |
| return "%d:%d" % (self.direction, self.no_blanks) |