diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2008-09-03 09:03:16 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-09-03 09:03:16 +0800 |
commit | a170b2704194c5a047820cfa5d68e3a22e84e5f7 (patch) | |
tree | 1d2197498054ce816f3c31480b30c91c86e8022c | |
parent | 287f00547cb55e969d14ecd7730f8322d94788d6 (diff) | |
download | ibus-anthy-a170b2704194c5a047820cfa5d68e3a22e84e5f7.tar.gz |
Split RomajiSegment from jastring.py
-rw-r--r-- | engine/Makefile.am | 1 | ||||
-rw-r--r-- | engine/jastring.py | 144 |
2 files changed, 3 insertions, 142 deletions
diff --git a/engine/Makefile.am b/engine/Makefile.am index 0d8cc2f..d9ca635 100644 --- a/engine/Makefile.am +++ b/engine/Makefile.am @@ -24,6 +24,7 @@ engine_anthy_PYTHON = \ main.py \ tables.py \ jastring.py \ + romaji.py \ $(NULL) engine_anthydir = $(pkgdatadir)/engine diff --git a/engine/jastring.py b/engine/jastring.py index 2410951..9d56edd 100644 --- a/engine/jastring.py +++ b/engine/jastring.py @@ -19,7 +19,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -from tables import * +import romaji class JaString: def __init__(self): @@ -44,7 +44,7 @@ class JaString: new_segments = segment_after.prepend(c) else: if c != u"\0" and c != u"": - new_segments = [RomajiSegment(c)] + new_segments = [romaji.Segment(c)] if new_segments: self.__segments[self.__cursor:self.__cursor] = new_segments self.__cursor += len(new_segments) @@ -128,143 +128,3 @@ class JaString: def is_empty(self): return all(map(lambda s: s.is_empty(), self.__segments)) -class RomajiSegment: - def __init__(self, enchars = u"", jachars = u""): - self.__enchars = enchars - if jachars: - self.__jachars = jachars - else: - self.__jachars = romaji_typing_rule.get(enchars, u"") - - def is_finished(self): - return self.__jachars != u"" - - def append(self, enchar): - if self.is_finished(): - if enchar == u"" and enchar == u"\0": - return [] - return [RomajiSegment(enchar)] - - text = self.__enchars + enchar - - jachars = romaji_typing_rule.get(text, None) - if jachars: - self.__enchars = text - self.__jachars = jachars - return [] - - jachars, c = romaji_double_consonat_typing_rule.get(text, (None, None)) - if jachars: - self.__enchars = text[0] - self.__jachars = jachars - return [RomajiSegment(c)] - - for i in range(-min(4, len(text)), 0): - enchars = text[i:] - - jachars = romaji_typing_rule.get(enchars, None) - if jachars: - jasegment = RomajiSegment(enchars, jachars) - self.__enchars = text[:i] - return [jasegment] - - jachars, c = romaji_double_consonat_typing_rule.get(enchars, (None, None)) - if jachars: - jasegment = RomajiSegment(enchars[:-len(c)], jachars) - self.__enchars = text[:i] - if c: - return [jasegment, RomajiSegment(c)] - return [jasegment] - - jachars, c = romaji_correction_rule.get(enchars, (None, None)) - if jachars: - jasegment = RomajiSegment(enchars[:-len(c)], jachars) - self.__enchars = text[:i] - if c: - return [jasegment, RomajiSegment(c)] - return [jasegment] - - - - self.__enchars = text - return [] - - def prepend(self, enchar): - if enchar == u"" or enchar == u"\0": - return [] - - if self.is_finished(): - return [RomajiSegment(enchar)] - - text = enchar + self.__enchars - jachars = romaji_typing_rule.get(text, None) - if jachars: - self.__enchars = text - self.__jachars = jachars - return [] - - jachars, c = romaji_double_consonat_typing_rule.get(text, (None, None)) - if jachars: - self.__enchars = c - return [RomajiSegment(text[0], jachars)] - - for i in range(min(4, len(text)), 0, -1): - enchars = text[:i] - - jachars = romaji_typing_rule.get(enchars, None) - if jachars: - jasegment = RomajiSegment(enchars, jachars) - self.__enchars = text[i:] - return [jasegment] - - jachars, c = romaji_double_consonat_typing_rule.get(enchars, (None, None)) - if jachars: - self.__enchars = c + text[i:] - return [RomajiSegment(enchars[:-len(c)], jachars)] - - jachars, c = romaji_correction_rule.get(enchars, (None, None)) - if jachars: - self.__enchars = c + text[i:] - return [RomajiSegment(enchars[:-len(c)], jachars)] - - - self.__enchars = text - return [] - - def set_enchars(self, enchars): - self.__enchars = enchars - - def get_enchars(self): - return self.__enchars - - def set_jachars(self, jachars): - self.__jachars = jachars - - def get_jachars(self): - return self.__jachars - - def to_hiragana(self): - if self.__jachars: - return self.__jachars - return self.__enchars - - def to_katakana(self): - if self.__jachars: - return u"".join(map(lambda c: hiragana_katakana_table[c][0], self.__jachars)) - return self.__enchars - - def to_half_width_katakana(self): - if self.__jachars: - return u"".join(map(lambda c: hiragana_katakana_table[c][1], self.__jachars)) - return self.__enchars - - def to_latin(self): - return self.__enchars - - def to_wide_latin(self): - return u"".join(map(ibus.unichar_half_to_full, self.__enchars)) - - def is_empty(self): - if self.__enchars or self.__jachars: - return False - return True |