| @@ -27,15 +27,46 @@ __all__ = ["Tag"] | |||||
| class Tag(Node): | class Tag(Node): | ||||
| TAG_UNKNOWN = 0 | TAG_UNKNOWN = 0 | ||||
| TAG_BOLD = 1 | |||||
| TAG_ITALIC = 2 | |||||
| TAG_REF | |||||
| TAG_MISC_HTML = 99 | |||||
| TAGS_VISIBLE = [] | |||||
| TAGS_INVISIBLE = [] | |||||
| # Basic HTML: | |||||
| TAG_ITALIC = 1 | |||||
| TAG_BOLD = 2 | |||||
| TAG_UNDERLINE = 3 | |||||
| TAG_STRIKETHROUGH = 4 | |||||
| TAG_UNORDERED_LIST = 5 | |||||
| TAG_ORDERED_LIST = 6 | |||||
| TAG_DEF_TERM = 7 | |||||
| TAG_DEF_ITEM = 8 | |||||
| TAG_BLOCKQUOTE = 9 | |||||
| TAG_RULE = 10 | |||||
| TAG_BREAK = 11 | |||||
| TAG_ABBR = 12 | |||||
| TAG_PRE = 13 | |||||
| TAG_MONOSPACE = 14 | |||||
| TAG_CODE = 15 | |||||
| TAG_SPAN = 16 | |||||
| TAG_DIV = 17 | |||||
| TAG_FONT = 18 | |||||
| TAG_SMALL = 19 | |||||
| TAG_BIG = 20 | |||||
| TAG_CENTER = 21 | |||||
| # MediaWiki parser hooks: | |||||
| TAG_REF = 101 | |||||
| TAG_GALLERY = 102 | |||||
| TAG_MATH = 103 | |||||
| TAG_NOWIKI = 104 | |||||
| TAG_NOINCLUDE = 105 | |||||
| TAG_INCLUDEONLY = 106 | |||||
| TAG_ONLYINCLUDE = 107 | |||||
| # Additional parser hooks: | |||||
| TAG_SYNTAXHIGHLIGHT = 201 | |||||
| TAG_POEM = 202 | |||||
| # Lists of tags: | |||||
| TAGS_INVISIBLE = [TAG_REF, TAG_GALLERY, TAG_MATH, TAG_NOINCLUDE] | |||||
| TAGS_VISIBLE = range(300) - TAGS_INVISIBLE | |||||
| def __init__(self, type_, tag, contents, attrs=None, showtag=True, | def __init__(self, type_, tag, contents, attrs=None, showtag=True, | ||||
| self_closing=False, open_padding=0, close_padding=0): | self_closing=False, open_padding=0, close_padding=0): | ||||
| @@ -53,7 +84,11 @@ class Tag(Node): | |||||
| def __unicode__(self): | def __unicode__(self): | ||||
| if not self.showtag: | if not self.showtag: | ||||
| raise NotImplementedError() | |||||
| open_, close = self._translate() | |||||
| if self.self_closing: | |||||
| return _open | |||||
| else: | |||||
| return open_ + unicode(self.contents) + close | |||||
| result = "<" + unicode(self.tag) | result = "<" + unicode(self.tag) | ||||
| if self.attrs: | if self.attrs: | ||||
| @@ -65,6 +100,18 @@ class Tag(Node): | |||||
| result += "</" + unicode(self.tag) + " " * self.close_padding + ">" | result += "</" + unicode(self.tag) + " " * self.close_padding + ">" | ||||
| return result | return result | ||||
| def translate(self): | |||||
| translations { | |||||
| self.TAG_ITALIC: ("''", "''"), | |||||
| self.TAG_BOLD: ("'''", "'''"), | |||||
| self.TAG_UNORDERED_LIST: ("*", ""), | |||||
| self.TAG_ORDERED_LIST: ("#", ""), | |||||
| self.TAG_DEF_TERM: (";", ""), | |||||
| self.TAG_DEF_ITEM: (":", ""), | |||||
| self.TAG_RULE: ("----", ""), | |||||
| } | |||||
| return translations[self.type] | |||||
| @property | @property | ||||
| def type(self): | def type(self): | ||||
| return self._type | return self._type | ||||