def fmt_glosses(self, search_conds=None): '''Return list of formatted strings, one per gloss.''' if search_conds and search_conds.field == 'gloss': matchreg = search.matched_regexp(search_conds) return [ color.color_regexp(matchreg, gloss) for gloss in self.glosses ] else: return [gloss for gloss in self.glosses]
def fmt_glosses(self, search_conds=None): '''Return list of formatted strings, one per gloss.''' if search_conds and search_conds.field == 'gloss': matchreg = search.matched_regexp(search_conds) return [color.color_regexp(matchreg, gloss) for gloss in self.glosses] else: return [gloss for gloss in self.glosses]
def fmt(self, search_conds=None): if search_conds and search_conds.field == 'kanji': matchreg = search.matched_regexp(search_conds) t = color.color_regexp(matchreg, self.text, 'kanji', 'matchjp') else: t = fmt(self.text, 'kanji') if self.ke_inf: t = t + fmt('[' + self.ke_inf + ']', 'subdue') return t
def format_human(self, search_conds, romajifn=None): matchreg = search.matched_regexp(search_conds) ksep = fmt(';', 'subdue') if romajifn: rsep = fmt(', ', 'subdue') for r in self.readings: r.romaji = romajifn else: rsep = fmt('、', 'subdue') gsep = fmt('; ', 'subdue') rpar = (fmt('(', 'subdue') + '%s' + fmt(')', 'subdue')) s = '' if self.is_frequent(): s += fmt('※', 'highlight') + ' ' has_re_restr = False for r in self.readings: if r.re_restr: has_re_restr = True break if self.kanjis: if not has_re_restr: s += ksep.join([k.fmt(search_conds) for k in self.kanjis]) s += rpar % (rsep.join([r.fmt(search_conds) for r in self.readings])) else: ks = [] for k in self.kanjis: my_r = [r.fmt(search_conds) for r in self.readings if not r.re_restr or k.text in r.re_restr] ks.append(k.fmt(search_conds) + rpar % (rsep.join(my_r))) s += ksep.join(ks) else: s += rsep.join([r.fmt(search_conds) for r in self.readings]) for sensenum, sense in enumerate(self.senses, start=1): sn = fmt('%d.' % sensenum, 'misc') tagstr = sense.tagstr(search_conds) if tagstr: tagstr += ' ' s += "\n%s %s%s" % (sn, tagstr, gsep.join(sense.fmt_glosses(search_conds))) return s
def format_human(self, search_conds, romajifn=None): matchreg = search.matched_regexp(search_conds) ksep = fmt(';', 'subdue') if romajifn: rsep = fmt(', ', 'subdue') for r in self.readings: r.romaji = romajifn else: rsep = fmt('、', 'subdue') gsep = fmt('; ', 'subdue') rpar = (fmt('(', 'subdue') + '%s' + fmt(')', 'subdue')) s = '' if self.is_frequent(): s += fmt('※', 'highlight') + ' ' has_re_restr = False for r in self.readings: if r.re_restr: has_re_restr = True break if self.kanjis: if not has_re_restr: s += ksep.join([k.fmt(search_conds) for k in self.kanjis]) s += rpar % (rsep.join( [r.fmt(search_conds) for r in self.readings])) else: ks = [] for k in self.kanjis: my_r = [ r.fmt(search_conds) for r in self.readings if not r.re_restr or k.text in r.re_restr ] ks.append(k.fmt(search_conds) + rpar % (rsep.join(my_r))) s += ksep.join(ks) else: s += rsep.join([r.fmt(search_conds) for r in self.readings]) for sensenum, sense in enumerate(self.senses, start=1): sn = fmt('%d.' % sensenum, 'misc') tagstr = sense.tagstr(search_conds) if tagstr: tagstr += ' ' s += "\n%s %s%s" % (sn, tagstr, gsep.join(sense.fmt_glosses(search_conds))) return s
def fmt(self, search_conds=None): if search_conds and search_conds.field == 'kanji': matchreg = search.matched_regexp(search_conds) t = color.color_regexp(matchreg, self.text, 'kanji', 'matchjp') else: t = fmt(self.text, 'kanji') if self.ke_inf: t = t + fmt('[' + self.ke_inf + ']', 'subdue') return t
def fmt(self, search_conds=None): if self.romaji: t = self.romaji(self.text) else: t = self.text if search_conds and search_conds.field == 'reading': matchreg = search.matched_regexp(search_conds) t = color.color_regexp(matchreg, t, 'reading', 'matchjp') else: t = fmt(t, 'reading') if self.re_nokanji: t = fmt('*', 'subdue') + t if self.re_inf: t = t + fmt('[' + self.re_inf + ']', 'subdue') return t
def format_tsv(self, search_conds, romajifn=None): matchreg = search.matched_regexp(search_conds) # as of 2012-02-22, no kanji or reading field uses full-width # semicolon. ksep = fmt(';', 'subdue') if romajifn: # ascii comma is free, too rsep = fmt(',', 'subdue') for r in self.readings: r.romaji = romajifn else: rsep = fmt(';', 'subdue') # as of 2012-02-22, only one entry uses '|' . # and it's "c|net", which should be "CNET" anyway. gsep = fmt('|', 'subdue') # escape separator for sense in self.senses: for idx, gloss in enumerate(sense.glosses): # I am unreasonably proud of this solution. sense.glosses[idx] = sense.glosses[idx].replace(gsep, '¦') s = '' s += rsep.join([r.fmt(search_conds) for r in self.readings]) s += "\t" + ksep.join([k.fmt(search_conds) for k in self.kanjis]) for sense in self.senses: tagstr = sense.tagstr(search_conds) if tagstr: tagstr += ' ' s += "\t%s%s" % (tagstr, gsep.join(sense.glosses)) if self.is_frequent(): s += ' ' + fmt('(P)', 'highlight') return s
def fmt(self, search_conds=None): if self.romaji: t = self.romaji(self.text) else: t = self.text if search_conds and search_conds.field == 'reading': matchreg = search.matched_regexp(search_conds) t = color.color_regexp(matchreg, t, 'reading', 'matchjp') else: t = fmt(t, 'reading') if self.re_nokanji: t = fmt('*', 'subdue') + t if self.re_inf: t = t + fmt('[' + self.re_inf + ']', 'subdue') return t
def format_tsv(self, search_conds, romajifn=None): matchreg = search.matched_regexp(search_conds) # as of 2012-02-22, no kanji or reading field uses full-width # semicolon. ksep = fmt(';', 'subdue') if romajifn: # ascii comma is free, too rsep = fmt(',', 'subdue') for r in self.readings: r.romaji = romajifn else: rsep = fmt(';', 'subdue') # as of 2012-02-22, only one entry uses '|' . # and it's "c|net", which should be "CNET" anyway. gsep = fmt('|', 'subdue') # escape separator for sense in self.senses: for idx, gloss in enumerate(sense.glosses): # I am unreasonably proud of this solution. sense.glosses[idx] = sense.glosses[idx].replace(gsep, '¦') s = '' s += rsep.join([r.fmt(search_conds) for r in self.readings]) s += "\t" + ksep.join([k.fmt(search_conds) for k in self.kanjis]) for sense in self.senses: tagstr = sense.tagstr(search_conds) if tagstr: tagstr += ' ' s += "\t%s%s" % (tagstr, gsep.join(sense.glosses)) if self.is_frequent(): s += ' ' + fmt('(P)', 'highlight') return s