Exemple #1
0
    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]
Exemple #2
0
    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]
Exemple #3
0
    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
Exemple #4
0
    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
Exemple #5
0
    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
Exemple #6
0
    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
Exemple #7
0
    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
Exemple #8
0
    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
Exemple #9
0
    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
Exemple #10
0
    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