Hatta Devel

view tests/test_parser.txt @ 621:633ab90042f4

completely overhaul the table parsing to allow links with | in them
author sheep@ghostwheel
date Wed Oct 21 22:22:30 2009 +0200 (2009-10-21)
parents 03c0dd17a499
children 7b9857830021
line source
1 >>> import lxml.html.usedoctest
2 >>> from hatta import *
3 >>> def link(addr, label, class_=None, image=None, lineno=0):
4 ... href = werkzeug.escape(addr, quote=True)
5 ... text = image or werkzeug.escape(label or addr)
6 ... return u'<a href="%s">%s</a>' % (href, text)
7 >>> def img(addr, label, class_=None, image=None):
8 ... href = werkzeug.escape(addr, quote=True)
9 ... text = image or werkzeug.escape(label or addr, quote=True)
10 ... return u'<img src="%s" alt="%s">' % (href, text)
11 >>> def hgh(text, mime=None, syntax=None, line_no=0):
12 ... class DummyPage(WikiPageText):
13 ... def __init__(self):
14 ... self.request = self
15 ... self.request.print_highlight_styles = None
16 ... return DummyPage().highlight(text, mime, syntax, line_no)
17 >>> def parse(text):
18 ... lines = '\n\r'.join(text.split('\n')).split('\r')
19 ... print u''.join(WikiParser(lines, link, img, hgh))
21 >>> parse(u"ziew")
22 <p id="line_0">ziew</p>
24 >>> parse(u"d&d")
25 <p id="line_0">d&amp;d</p>
27 >>> parse(u"= head =")
28 <a name="head-1"></a><h1 id="line_0">head</h1>
30 >>> parse(u'test')
31 <p id="line_0">test</p>
33 >>> parse(u'test\ntest')
34 <p id="line_0">test
35 test</p>
37 >>> parse(u'test\n\ntest')
38 <p id="line_0">test</p>
39 <p id="line_2">test</p>
41 >>> parse(u'test\\\\test')
42 <p id="line_0">test<br>test</p>
44 >>> parse(u'----')
45 <hr>
47 >>> parse(u'==test==')
48 <a name="head-0-1"></a>
49 <h2 id="line_0">test</h2>
51 >>> parse(u'== test')
52 <a name="head-0-1"></a>
53 <h2 id="line_0">test</h2>
55 >>> parse(u'==test====')
56 <a name="head-0-1"></a>
57 <h2 id="line_0">test</h2>
59 >>> parse(u'=====test')
60 <a name="head-0-0-0-0-1"></a>
61 <h5 id="line_0">test</h5>
63 >>> parse(u'==test==\ntest\n===test===')
64 <a name="head-0-1"></a>
65 <h2 id="line_0">test</h2>
66 <p id="line_1">test</p>
67 <a name="head-0-1-1"></a>
68 <h3 id="line_2">test</h3>
70 >>> parse(u'test\n* test line one\n * test line two\ntest')
71 <p id="line_0">test</p>
72 <ul id="line_1">
73 <li>test line one</li>
74 <li>test line two</li>
75 </ul>
76 <p id="line_3">test</p>
78 >>> parse(u'* test line one\n* test line two\n** Nested item')
79 <ul id="line_0">
80 <li>test line one</li>
81 <li>test line two<ul id="line_2">
82 <li>Nested item</li>
83 </ul></li>
84 </ul>
86 >>> parse(u'test //test test// test **test test** test')
87 <p id="line_0">test <i>test test</i> test <b>test test</b> test</p>
89 >>> parse(u'test //test **test// test** test')
90 <p id="line_0">test <i>test <b>test</b></i> test<b> test</b></p>
92 >>> parse(u'**test')
93 <p id="line_0"><b>test</b></p>
95 >>> parse(u'|x|y|z|\n|a|b|c|\n|d|e|f|\ntest')
96 <table id="line_0">
97 <tr>
98 <td>x</td>
99 <td>y</td>
100 <td>z</td>
101 </tr>
102 <tr>
103 <td>a</td>
104 <td>b</td>
105 <td>c</td>
106 </tr>
107 <tr>
108 <td>d</td>
109 <td>e</td>
110 <td>f</td>
111 </tr>
112 </table>
113 <p id="line_3">test</p>
115 >>> parse(u'|=x|y|=z=|\n|a|b|c|\n|d|e|=f=|')
116 <table id="line_0">
117 <thead><tr>
118 <th>x</th>
119 <td>y</td>
120 <th>z</th>
121 </tr></thead>
122 <tr>
123 <td>a</td>
124 <td>b</td>
125 <td>c</td>
126 </tr>
127 <tr>
128 <td>d</td>
129 <td>e</td>
130 <th>f</th>
131 </tr>
132 </table>
134 >>> parse(u'test http://example.com/test test')
135 <p id="line_0">
136 test <a href="http://example.com/test">
137 http://example.com/test
138 </a> test</p>
140 >>> parse(u'http://example.com/,test, test')
141 <p id="line_0">
142 <a href="http://example.com/,test">http://example.com/,test</a>, test
143 </p>
145 >>> parse(u'(http://example.com/test)')
146 <p id="line_0">
147 (<a href="http://example.com/test">http://example.com/test</a>)</p>
149 This might be considered a bug, but impossible to detect in general.
150 >>> parse(u'http://example.com/(test)')
151 <p id="line_0">
152 <a href="http://example.com/(test">http://example.com/(test</a>)</p>
154 >>> parse(u'http://example.com/test?test&test=1')
155 <p id="line_0"><a href="http://example.com/test?test&amp;test=1">
156 http://example.com/test?test&amp;test=1
157 </a></p>
159 >>> parse(u'http://example.com/~test')
160 <p id="line_0">
161 <a href="http://example.com/~test">http://example.com/~test</a></p>
163 >>> parse(u'[[test]] [[tset|test]]')
164 <p id="line_0"><a href="test">test</a> <a href="tset">test</a></p>
166 >>> parse(u'[[http://example.com|test]]')
167 <p id="line_0"><a href="http://example.com">test</a></p>
169 >>> parse(u'{{{\nlorem ipsum\n}}}')
170 <pre id="line_1" class="code">lorem ipsum</pre>
172 >>> parse(u'{{{#!text\nlorem ipsum\n}}}')
173 <div class="highlight"><pre><div id="line_1">lorem ipsum</div></pre></div>
175 >>> parse(u'{{{#!c++\nint eger;\n}}}')
176 <div class="highlight"><pre><div id="line_1"><span class="kt">int</span> <span class="n">eger</span><span class="p">;</span></div></pre></div>
178 >>> parse(u'|table|')
179 <table id="line_0"><tr><td>table</td></tr></table>
181 >>> parse(u'|table| cell |')
182 <table id="line_0"><tr><td>table</td><td> cell </td></tr></table>
184 >>> parse(u'|table|=head=|')
185 <table id="line_0"><tr><td>table</td><th>head</th></tr></table>
187 >>> parse(u'|=table=|=head=|')
188 <table id="line_0"><thead><tr><th>table</th><th>head</th></tr></thead></table>
190 >>> parse(u'|table|[[link|link]]|')
191 <table id="line_0"><tr><td>table</td><td><a href="link">link</a></td></tr></table>
193 >>> parse(u'|table|{{img|img}}|')
194 <table id="line_0"><tr><td>table</td><td><img src="img" alt="img"></td></tr></table>
196 >>> parse(u'|table|{{{code|code}}}|')
197 <table id="line_0"><tr><td>table</td><td><code>code|code</code></td></tr></table>