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