2 # -*- coding: iso-8859-15 -*-
3 import wrpylib.mwmarkup
6 def test_find_template():
7 wikitext = u'''== Allgemeines ==
9 | Position = 47.309820 N 9.986508 E
16 | Lawinen = gelegentlich
18 | Öffentliche Anreise = Ja
20 | Aufstieg getrennt = Nein
21 | Aufstiegshilfe = Nein
22 | Beleuchtungsanlage = Nein
27 | Telefonauskunft = +43-664-1808482 (Bergkristallhütte)
28 | Bild = Rodelbahn Bergkristallhütte 2009-03-03.jpg
29 | In Übersichtskarte = Ja
32 Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.'''
33 start, end = wrpylib.mwmarkup.find_template(wikitext, u'Rodelbahnbox')
34 assert start == wikitext.find(u'{{')
35 assert end == wikitext.find(u'}}')+2
38 def test_TemplateValidator():
39 v = wrpylib.mwmarkup.TemplateValidator()
40 value = u'{{Rodelbahnbox | Unbenannt | Position = 47.309820 N 9.986508 E | Aufstieg möglich = Ja }}'
41 title, anonym_params, named_params = v.to_python(value)
42 assert title == u'Rodelbahnbox'
43 assert anonym_params == [u'Unbenannt']
44 assert named_params.keys() == [u'Position', u'Aufstieg möglich']
45 assert named_params.values() == ['47.309820 N 9.986508 E', 'Ja']
48 def test_split_template():
49 wikitext = u'''== Allgemeines ==
51 | Position = 47.309820 N 9.986508 E
58 | Lawinen = gelegentlich
60 | Öffentliche Anreise = Ja
62 | Aufstieg getrennt = Nein
63 | Aufstiegshilfe = Nein
64 | Beleuchtungsanlage = Nein
69 | Telefonauskunft = +43-664-1808482 (Bergkristallhütte)
70 | Bild = Rodelbahn Bergkristallhütte 2009-03-03.jpg
71 | In Übersichtskarte = Ja
74 Die Rodelbahn zur Bergkristallhütte ist durchaus abwechslungsreich.'''
75 start, end = wrpylib.mwmarkup.find_template(wikitext, u'Rodelbahnbox')
76 template_title, parameters = wrpylib.mwmarkup.split_template(wikitext[start:end])
77 assert template_title == u'Rodelbahnbox'
78 assert len(parameters) == 22
79 assert parameters['Position'] == u'47.309820 N 9.986508 E'
80 assert parameters['Telefonauskunft'] == u'+43-664-1808482 (Bergkristallhütte)'
81 assert parameters['Schwierigkeit'] == u''
84 def test_create_template():
85 wikitext = u'''{{Nicetemplate|Red|Bold|Position=Top|Alignment=Right}}'''
86 template_title, parameters = wrpylib.mwmarkup.split_template(wikitext)
88 keys = [u'1', u'2', u'Position', u'Alignment']
89 values = [parameters[k] for k in keys]
90 wikitext_generated = wrpylib.mwmarkup.create_template(template_title, values[:2], keys[2:], values[2:])
91 wikitext_table = wrpylib.mwmarkup.create_template(template_title, values[:2], keys[2:], values[2:], True)
92 assert wikitext_generated == wikitext
96 wikitext = u'This is <tag>my first tag</tag> and <tag>my second tag</tag>.'
97 start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, u'tags')
98 assert (start, content, endtag, end) == (None, None, None, None)
99 start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, u'tag')
100 assert (start, content, endtag, end) == (8, 13, 25, 31)
101 start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, u'tag', end)
102 assert (start, content, endtag, end) == (36, 41, 54, 60)
103 wikitext = u'This is <tag myattrib="4"/>.'
104 start, content, endtag, end = wrpylib.mwmarkup.find_tag(wikitext, u'tag')
105 assert (start, content, endtag, end) == (8, None, None, 27)
108 def test_parse_googlemap():
110 <googlemap version="0.9" lat="47.113291" lon="11.272337" zoom="15">
111 (Parkplatz)47.114958,11.266026
114 (Gasthaus) 47.114715, 11.266262, Alt Bärnbad (Gasthaus)
123 attributes, coords, paths = wrpylib.mwmarkup.parse_googlemap(wikitext)
124 assert attributes['lon'] == 11.272337
125 assert attributes['lat'] == 47.113291
126 assert attributes['zoom'] == 15
128 (11.266026, 47.114958, 'Parkplatz', 'Erster Parkplatz'),
129 (11.266262, 47.114715, 'Gasthaus', u'Alt Bärnbad (Gasthaus)')]
132 (11.266262, 47.114715, None, None),
133 (11.268381, 47.114135, None, None),
134 (11.269322, 47.113421, None, None),
135 (11.269979, 47.11277, None, None),
136 (11.271119, 47.112408, None, None)])]
138 result = wrpylib.mwmarkup.parse_googlemap(wikitext.replace('<googlemap', '|googlemap'))
140 except wrpylib.mwmarkup.ParseError: