Hatta Numbered Lists Branch
changeset 645:cc65a44d2f23
Made the parser more generic by introducing a text2html generator
| author | Ben |
|---|---|
| date | Mon Dec 07 21:00:07 2009 +0100 (2009-12-07) |
| parents | 1372a7f3b1ce |
| children | ef5c68799a02 |
| files | hatta.py |
line diff
1.1 --- a/hatta.py Mon Dec 07 19:48:06 2009 +0100 1.2 +++ b/hatta.py Mon Dec 07 21:00:07 2009 +0100 1.3 @@ -728,13 +728,12 @@ 1.4 ("text", ur".+?"), 1.5 ] 1.6 1.7 - def __init__(self, lines, wiki_link, wiki_image, 1.8 + def __init__(self, wiki_link, wiki_image, 1.9 wiki_syntax=None, wiki_math=None, smilies=None): 1.10 self.wiki_link = wiki_link 1.11 self.wiki_image = wiki_image 1.12 self.wiki_syntax = wiki_syntax 1.13 self.wiki_math = wiki_math 1.14 - self.enumerated_lines = enumerate(lines) 1.15 if smilies is not None: 1.16 self.smilies = smilies 1.17 self.compile_patterns() 1.18 @@ -764,6 +763,10 @@ 1.19 self.markup_re = re.compile(ur"|".join("(?P<%s>%s)" % kv 1.20 for kv in self.markup)) 1.21 1.22 + def text2html(self, lines): 1.23 + self.enumerated_lines = enumerate(lines) 1.24 + return self.parse() 1.25 + 1.26 def __iter__(self): 1.27 return self.parse() 1.28 1.29 @@ -780,7 +783,8 @@ 1.30 links.append((addr, label)) 1.31 return u'' 1.32 lines = text.split('\n') 1.33 - for part in cls(lines, link, link): 1.34 + parser = cls(link, link) 1.35 + for part in parser.text2html(text): 1.36 for ret in links: 1.37 yield ret 1.38 links[:] = [] 1.39 @@ -2034,19 +2038,20 @@ 1.40 if not (parser.lower() in ("internal")): 1.41 parser = "internal" 1.42 if parser == "internal": 1.43 - self.parser = WikiParser 1.44 + if self.wiki.icon_page and self.wiki.icon_page in self.storage: 1.45 + icons = self.index.page_links_and_labels(self.wiki.icon_page) 1.46 + smilies = dict((emo, link) for (link, emo) in icons) 1.47 + else: 1.48 + smilies = None 1.49 + parserengine = WikiParser(self.wiki_link, self.wiki_image, 1.50 + self.highlight, self.wiki_math, smilies) 1.51 + self.parser = parserengine.text2html 1.52 1.53 def view_content(self, lines=None): 1.54 if lines is None: 1.55 f = self.storage.open_page(self.title) 1.56 lines = self.storage.page_lines(f) 1.57 - if self.wiki.icon_page and self.wiki.icon_page in self.storage: 1.58 - icons = self.index.page_links_and_labels(self.wiki.icon_page) 1.59 - smilies = dict((emo, link) for (link, emo) in icons) 1.60 - else: 1.61 - smilies = None 1.62 - content = self.parser(lines, self.wiki_link, self.wiki_image, 1.63 - self.highlight, self.wiki_math, smilies) 1.64 + content = self.parser(lines) 1.65 return content 1.66 1.67 def wiki_math(self, math):
