Пример #1
0
    def doc_description(self, paragraph,
                        delim=re.compile(r'\s+--\s+').search,
                        nb=re.compile(r'[^\000- ]').search):

        top = paragraph.getColorizableTexts()[0]
        d = delim(top)
        if not d:
            return None
        start, end = d.span()
        title = top[:start]
        if title.find('\n') >= 0:
            return None
        if not nb(title):
            return None
        d = top[start:end]
        top = top[end:]

        subs = paragraph.getSubparagraphs()
        if top[-2:] == '::':
            subs = [StructuredTextExample(subs)]
            top = top[:-1]

        return StructuredTextDescription(
            title, top, subs,
            indent=paragraph.indent,
            delim=d)
Пример #2
0
    def doc_numbered(self,
                     paragraph,
                     expr=re.compile(
                         r'(\s*[%s]\.)|(\s*[0-9]+\.)|(\s*[0-9]+\s+)' % letters).match):

        # This is the old expression. It had a nasty habit
        # of grabbing paragraphs that began with a single
        # letter word even if there was no following period.

        #expr = re.compile('\s*'
        #                   '(([a-zA-Z]|[0-9]+|[ivxlcdmIVXLCDM]+)\.)*'
        #                   '([a-zA-Z]|[0-9]+|[ivxlcdmIVXLCDM]+)\.?'
        #                   '\s+').match):

        top = paragraph.getColorizableTexts()[0]
        m = expr(top)
        if not m:
            return None

        subs = paragraph.getSubparagraphs()
        if top[-2:] == '::':
            subs = [StructuredTextExample(subs)]
            top = top[:-1]
        return StructuredTextNumbered(top[m.span()[1]:], subs,
                                      indent=paragraph.indent,
                                      number=top[:m.span()[1]])
Пример #3
0
    def doc_bullet(self, paragraph, expr=re.compile(r'\s*[-*o]\s+').match):
        top = paragraph.getColorizableTexts()[0]
        m = expr(top)

        if not m:
            return None

        subs = paragraph.getSubparagraphs()
        if top[-2:] == '::':
            subs = [StructuredTextExample(subs)]
            top = top[:-1]
        return StructuredTextBullet(top[m.span()[1]:], subs,
                                    indent=paragraph.indent,
                                    bullet=top[:m.span()[1]])
Пример #4
0
    def doc_header(self, paragraph):
        subs = paragraph.getSubparagraphs()
        if not subs:
            return None

        top = paragraph.getColorizableTexts()[0]
        if not top.strip():
            return None

        if top[-2:] == '::':
            subs = StructuredTextExample(subs)
            if top.strip() == '::': return subs
            # copy attrs when returning a paragraph
            kw = {}
            atts = getattr(paragraph, '_attributes', [])
            for att in atts:
                kw[att] = getattr(paragraph, att)
            return StructuredTextParagraph(top[:-1], [subs], **kw)

        if top.find('\n') >= 0: return None
        return StructuredTextSection(top, subs, indent=paragraph.indent)