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)
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]])
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]])
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)