2 # -*- coding: iso-8859-15 -*-
3 import wrpylib.mwmarkup
7 class TestMwMarkup(unittest.TestCase):
8 def test_find_template(self):
9 wikitext = '''== Allgemeines ==
11 | Position = 47.309820 N 9.986508 E
18 | Lawinen = gelegentlich
20 | Öffentliche Anreise = Ja
22 | Aufstieg getrennt = Nein
23 | Aufstiegshilfe = Nein
24 | Beleuchtungsanlage = Nein
29 | Telefonauskunft = +43-664-1808482 (Bergkristallhütte)
30 | Bild = Rodelbahn Bergkristallhütte 2009-03-03.jpg
31 | In Übersichtskarte = Ja
34 Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.'''
35 start, end = wrpylib.mwmarkup.find_template(wikitext, 'Rodelbahnbox')
36 assert start == wikitext.find('{{')
37 assert end == wikitext.find('}}')+2
40 def test_TemplateValidator(self):
41 v = wrpylib.mwmarkup.TemplateValidator()
42 value = '{{Rodelbahnbox | Unbenannt | Position = 47.309820 N 9.986508 E | Aufstieg möglich = Ja }}'
43 title, anonym_params, named_params = v.to_python(value)
44 assert title == 'Rodelbahnbox'
45 assert anonym_params == ['Unbenannt']
46 assert list(named_params.keys()) == ['Position', 'Aufstieg möglich']
47 assert list(named_params.values()) == ['47.309820 N 9.986508 E', 'Ja']
48 value2 = v.from_python((title, anonym_params, named_params))
49 assert value2 == '{{Rodelbahnbox|Unbenannt|Position=47.309820 N 9.986508 E|Aufstieg möglich=Ja}}'
50 v = wrpylib.mwmarkup.TemplateValidator(as_table=True)
51 value3 = v.from_python((title, anonym_params, named_params))
53 '{{Rodelbahnbox\n' + \
55 '| Position = 47.309820 N 9.986508 E\n' + \
56 '| Aufstieg möglich = Ja\n' + \
58 v = wrpylib.mwmarkup.TemplateValidator(strip=False)
59 title, anonym_params, named_params = v.to_python(value)
60 assert title == 'Rodelbahnbox '
61 assert anonym_params == [' Unbenannt ']
62 assert list(named_params.keys()) == [' Position ', ' Aufstieg möglich ']
63 assert list(named_params.values()) == [' 47.309820 N 9.986508 E ', ' Ja ']
66 def test_split_template(self):
67 wikitext = '''== Allgemeines ==
69 | Position = 47.309820 N 9.986508 E
76 | Lawinen = gelegentlich
78 | Öffentliche Anreise = Ja
80 | Aufstieg getrennt = Nein
81 | Aufstiegshilfe = Nein
82 | Beleuchtungsanlage = Nein
87 | Telefonauskunft = +43-664-1808482 (Bergkristallhütte)
88 | Bild = Rodelbahn Bergkristallhütte 2009-03-03.jpg
89 | In Übersichtskarte = Ja
92 Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.'''
93 start, end = wrpylib.mwmarkup.find_template(wikitext, 'Rodelbahnbox')
94 template_title, parameters = wrpylib.mwmarkup.split_template(wikitext[start:end])
95 assert template_title == 'Rodelbahnbox'
96 assert len(parameters) == 22
97 assert parameters['Position'] == '47.309820 N 9.986508 E'
98 assert parameters['Telefonauskunft'] == '+43-664-1808482 (Bergkristallhütte)'
99 assert parameters['Schwierigkeit'] == ''
102 def test_create_template(self):
103 wikitext = '''{{Nicetemplate|Red|Bold|Position=Top|Alignment=Right}}'''
104 template_title, parameters = wrpylib.mwmarkup.split_template(wikitext)
105 keys = ['1', '2', 'Position', 'Alignment']
106 values = [parameters[k] for k in keys]
107 wikitext_generated = wrpylib.mwmarkup.create_template(template_title, values[:2], keys[2:], values[2:])
108 wikitext_table = wrpylib.mwmarkup.create_template(template_title, values[:2], keys[2:], values[2:], True)
109 assert wikitext_generated == wikitext
112 def test_find_tag(self):
113 wikitext = 'This is <tag>my first tag</tag> and <tag>my second tag</tag>.'
114 start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, 'tags')
115 assert (start, content, endtag, end) == (None, None, None, None)
116 start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, 'tag')
117 assert (start, content, endtag, end) == (8, 13, 25, 31)
118 start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, 'tag', end)
119 assert (start, content, endtag, end) == (36, 41, 54, 60)
120 wikitext = 'This is <tag myattrib="4"/>.'
121 start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, 'tag')
122 assert (start, content, endtag, end) == (8, None, None, 27)
125 def test_parse_googlemap(self):
127 <googlemap version="0.9" lat="47.113291" lon="11.272337" zoom="15">
128 (Parkplatz)47.114958,11.266026
131 (Gasthaus) 47.114715, 11.266262, Alt Bärnbad (Gasthaus)
140 attributes, coords, paths = wrpylib.mwmarkup.parse_googlemap(wikitext)
141 assert attributes['lon'] == 11.272337
142 assert attributes['lat'] == 47.113291
143 assert attributes['zoom'] == 15
145 (11.266026, 47.114958, 'Parkplatz', 'Erster Parkplatz'),
146 (11.266262, 47.114715, 'Gasthaus', 'Alt Bärnbad (Gasthaus)')]
149 (11.266262, 47.114715, None, None),
150 (11.268381, 47.114135, None, None),
151 (11.269322, 47.113421, None, None),
152 (11.269979, 47.11277, None, None),
153 (11.271119, 47.112408, None, None)])]
155 result = wrpylib.mwmarkup.parse_googlemap(wikitext.replace('<googlemap', '|googlemap'))
157 except wrpylib.mwmarkup.ParseError: