Mercurial > moin > 1.9
annotate MoinMoin/formatter/__init__.py @ 907:d28181736482
merge main
author | Thomas Waldmann <tw AT waldmann-edv DOT de> |
---|---|
date | Fri, 07 Jul 2006 21:37:22 +0200 |
parents | e4dbe31e3ede 8166d766c440 |
children | 97ce857bdebf |
rev | line source |
---|---|
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
1 # -*- coding: iso-8859-1 -*- |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
2 """ |
661
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
3 MoinMoin - Formatter Package and FormatterBase |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
4 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
5 See "base.py" for the formatter interface. |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
6 |
661
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
7 @copyright: 2000-2004 by Jürgen Hermann <jh@web.de> |
0
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
8 @license: GNU GPL, see COPYING for details. |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
9 """ |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
10 from MoinMoin.util import pysupport |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
11 |
77665d8e2254
tag of nonpublic@localhost--archive/moin--enterprise--1.5--base-0
Thomas Waldmann <tw-public@gmx.de>
parents:
diff
changeset
|
12 modules = pysupport.getPackageModules(__file__) |
407
bea43f99cc27
star-merged moin--refactor--1.5 (formatter, parser, converter fixes, see docs/CHANGES.refactor)
Thomas Waldmann <tw@waldmann-edv.de>
parents:
0
diff
changeset
|
13 |
661
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
14 from MoinMoin import wikiutil |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
15 import re, types |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
16 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
17 class FormatterBase: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
18 """ This defines the output interface used all over the rest of the code. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
19 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
20 Note that no other means should be used to generate _content_ output, |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
21 while navigational elements (HTML page header/footer) and the like |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
22 can be printed directly without violating output abstraction. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
23 """ |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
24 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
25 hardspace = ' ' |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
26 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
27 def __init__(self, request, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
28 self.request = request |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
29 self._ = request.getText |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
30 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
31 self._store_pagelinks = kw.get('store_pagelinks', 0) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
32 self._terse = kw.get('terse', 0) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
33 self.pagelinks = [] |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
34 self.in_p = 0 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
35 self.in_pre = 0 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
36 self._highlight_re = None |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
37 self._base_depth = 0 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
38 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
39 def set_highlight_re(self, hi_re=None): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
40 if type(hi_re) in [types.StringType, types.UnicodeType]: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
41 try: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
42 self._highlight_re = re.compile(hi_re, re.U + re.IGNORECASE) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
43 except re.error: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
44 hi_re = re.escape(hi_re) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
45 self._highlight_re = re.compile(hi_re, re.U + re.IGNORECASE) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
46 else: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
47 self._highlight_re = hi_re |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
48 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
49 def lang(self, on, lang_name): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
50 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
51 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
52 def setPage(self, page): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
53 self.page = page |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
54 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
55 def sysmsg(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
56 """ Emit a system message (embed it into the page). |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
57 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
58 Normally used to indicate disabled options, or invalid markup. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
59 """ |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
60 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
61 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
62 # Document Level ##################################################### |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
63 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
64 def startDocument(self, pagename): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
65 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
66 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
67 def endDocument(self): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
68 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
69 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
70 def startContent(self, content_id="content", **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
71 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
72 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
73 def endContent(self): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
74 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
75 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
76 # Links ############################################################## |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
77 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
78 def pagelink(self, on, pagename='', page=None, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
79 """ make a link to page <pagename>. Instead of supplying a pagename, |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
80 it is also possible to give a live Page object, then page.page_name |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
81 will be used. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
82 """ |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
83 if not self._store_pagelinks or not on or kw.get('generated'): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
84 return '' |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
85 if not pagename and page: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
86 pagename = page.page_name |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
87 pagename = self.request.normalizePagename(pagename) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
88 if pagename and pagename not in self.pagelinks: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
89 self.pagelinks.append(pagename) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
90 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
91 def interwikilink(self, on, interwiki='', pagename='', **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
92 """ calls pagelink() for internal interwikilinks |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
93 to make sure they get counted for self.pagelinks. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
94 IMPORTANT: on and off must be called with same parameters, see |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
95 also the text_html formatter. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
96 """ |
828
902c34d95085
quoting for attachment filenames, wikiutil.load_wikimap, split_wiki can parse quoting, join_wiki does url_quote
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
661
diff
changeset
|
97 wikitag, wikiurl, wikitail, wikitag_bad = wikiutil.resolve_wiki(self.request, '%s:"%s"' % (interwiki, pagename)) |
661
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
98 if wikitag == 'Self' or wikitag == self.request.cfg.interwikiname: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
99 if wikitail.find('#') > -1: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
100 wikitail, kw['anchor'] = wikitail.split('#', 1) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
101 wikitail = wikiutil.url_unquote(wikitail) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
102 return self.pagelink(on, wikitail, **kw) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
103 return '' |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
104 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
105 def url(self, on, url=None, css=None, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
106 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
107 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
108 # Attachments ###################################################### |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
109 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
110 def attachment_link(self, url, text, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
111 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
112 def attachment_image(self, url, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
113 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
114 def attachment_drawing(self, url, text, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
115 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
116 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
117 def attachment_inlined(self, url, text, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
118 from MoinMoin.action import AttachFile |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
119 import os |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
120 _ = self.request.getText |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
121 pagename, filename = AttachFile.absoluteName(url, self.page.page_name) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
122 fname = wikiutil.taintfilename(filename) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
123 fpath = AttachFile.getFilename(self.request, pagename, fname) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
124 base, ext = os.path.splitext(filename) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
125 Parser = wikiutil.getParserForExtension(self.request.cfg, ext) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
126 if Parser is not None: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
127 try: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
128 content = file(fpath, 'r').read() |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
129 # Try to decode text. It might return junk, but we don't |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
130 # have enough information with attachments. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
131 content = wikiutil.decodeUnknownInput(content) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
132 colorizer = Parser(content, self.request) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
133 colorizer.format(self) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
134 except IOError: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
135 pass |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
136 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
137 return self.attachment_link(url, text) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
138 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
139 def anchordef(self, name): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
140 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
141 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
142 def line_anchordef(self, lineno): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
143 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
144 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
145 def anchorlink(self, on, name='', **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
146 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
147 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
148 def line_anchorlink(self, on, lineno=0): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
149 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
150 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
151 def image(self, src=None, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
152 """An inline image. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
153 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
154 Extra keyword arguments are according to the HTML <img> tag attributes. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
155 In particular an 'alt' or 'title' argument should give a description |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
156 of the image. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
157 """ |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
158 title = src |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
159 for titleattr in ('title', 'html__title', 'alt', 'html__alt'): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
160 if kw.has_key(titleattr): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
161 title = kw[titleattr] |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
162 break |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
163 if title: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
164 return '[Image:%s]' % title |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
165 return '[Image]' |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
166 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
167 def smiley(self, text): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
168 return text |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
169 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
170 def nowikiword(self, text): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
171 return self.text(text) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
172 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
173 # Text and Text Attributes ########################################### |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
174 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
175 def text(self, text, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
176 if not self._highlight_re: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
177 return self._text(text) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
178 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
179 result = [] |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
180 lastpos = 0 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
181 match = self._highlight_re.search(text) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
182 while match and lastpos < len(text): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
183 # add the match we found |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
184 result.append(self._text(text[lastpos:match.start()])) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
185 result.append(self.highlight(1)) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
186 result.append(self._text(match.group(0))) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
187 result.append(self.highlight(0)) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
188 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
189 # search for the next one |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
190 lastpos = match.end() + (match.end() == lastpos) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
191 match = self._highlight_re.search(text, lastpos) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
192 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
193 result.append(self._text(text[lastpos:])) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
194 return ''.join(result) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
195 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
196 def _text(self, text): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
197 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
198 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
199 def strong(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
200 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
201 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
202 def emphasis(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
203 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
204 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
205 def underline(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
206 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
207 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
208 def highlight(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
209 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
210 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
211 def sup(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
212 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
213 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
214 def sub(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
215 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
216 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
217 def strike(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
218 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
219 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
220 def code(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
221 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
222 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
223 def preformatted(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
224 self.in_pre = on != 0 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
225 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
226 def small(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
227 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
228 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
229 def big(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
230 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
231 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
232 # special markup for syntax highlighting ############################# |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
233 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
234 def code_area(self, on, code_id, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
235 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
236 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
237 def code_line(self, on): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
238 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
239 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
240 def code_token(self, tok_text, tok_type): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
241 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
242 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
243 # Paragraphs, Lines, Rules ########################################### |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
244 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
245 def linebreak(self, preformatted=1): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
246 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
247 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
248 def paragraph(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
249 self.in_p = on != 0 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
250 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
251 def rule(self, size=0, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
252 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
253 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
254 def icon(self, type): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
255 return type |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
256 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
257 # Lists ############################################################## |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
258 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
259 def number_list(self, on, type=None, start=None, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
260 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
261 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
262 def bullet_list(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
263 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
264 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
265 def listitem(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
266 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
267 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
268 def definition_list(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
269 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
270 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
271 def definition_term(self, on, compact=0, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
272 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
273 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
274 def definition_desc(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
275 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
276 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
277 def heading(self, on, depth, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
278 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
279 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
280 # Tables ############################################################# |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
281 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
282 def table(self, on, attrs={}, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
283 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
284 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
285 def table_row(self, on, attrs={}, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
286 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
287 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
288 def table_cell(self, on, attrs={}, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
289 raise NotImplementedError |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
290 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
291 # Dynamic stuff / Plugins ############################################ |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
292 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
293 def macro(self, macro_obj, name, args): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
294 # call the macro |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
295 return macro_obj.execute(name, args) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
296 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
297 def _get_bang_args(self, line): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
298 if line[:2] == '#!': |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
299 try: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
300 name, args = line[2:].split(None, 1) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
301 except ValueError: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
302 return '' |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
303 else: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
304 return args |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
305 return None |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
306 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
307 def parser(self, parser_name, lines): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
308 """ parser_name MUST be valid! |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
309 writes out the result instead of returning it! |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
310 """ |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
311 mt = wikiutil.MimeType(parser_name) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
312 for module_name in mt.module_name(): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
313 try: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
314 parser = wikiutil.importPlugin(self.request.cfg, "parser", module_name, "Parser") |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
315 break |
906
e4dbe31e3ede
fix formatter plugin code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
828
diff
changeset
|
316 except wikiutil.PluginMissingError: |
661
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
317 pass |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
318 else: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
319 raise "Parser not found" # XXX what now? |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
320 args = self._get_bang_args(lines[0]) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
321 if args is not None: |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
322 lines = lines[1:] |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
323 p = parser('\n'.join(lines), self.request, format_args=args) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
324 p.format(self) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
325 del p |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
326 return '' |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
327 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
328 # Other ############################################################## |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
329 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
330 def div(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
331 """ open/close a blocklevel division """ |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
332 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
333 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
334 def span(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
335 """ open/close a inline span """ |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
336 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
337 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
338 def rawHTML(self, markup): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
339 """ This allows emitting pre-formatted HTML markup, and should be |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
340 used wisely (i.e. very seldom). |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
341 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
342 Using this event while generating content results in unwanted |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
343 effects, like loss of markup or insertion of CDATA sections |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
344 when output goes to XML formats. |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
345 """ |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
346 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
347 import formatter, htmllib |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
348 from MoinMoin.util import simpleIO |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
349 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
350 # Regenerate plain text |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
351 f = simpleIO() |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
352 h = htmllib.HTMLParser(formatter.AbstractFormatter(formatter.DumbWriter(f))) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
353 h.feed(markup) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
354 h.close() |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
355 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
356 return self.text(f.getvalue()) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
357 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
358 def escapedText(self, on, **kw): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
359 """ This allows emitting text as-is, anything special will |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
360 be escaped (at least in HTML, some text output format |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
361 would possibly do nothing here) |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
362 """ |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
363 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
364 |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
365 def comment(self, text): |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
366 return "" |
19ef5f9fff84
moved formatter.base to formatter.__init__
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
407
diff
changeset
|
367 |