assert anonym_params == [u'Unbenannt']
assert named_params.keys() == [u'Position', u'Aufstieg möglich']
assert named_params.values() == ['47.309820 N 9.986508 E', 'Ja']
assert anonym_params == [u'Unbenannt']
assert named_params.keys() == [u'Position', u'Aufstieg möglich']
assert named_params.values() == ['47.309820 N 9.986508 E', 'Ja']
+ v = wrpylib.mwmarkup.TemplateValidator(strip=False)
+ title, anonym_params, named_params = v.to_python(value)
+ assert title == u'Rodelbahnbox '
+ assert anonym_params == [u' Unbenannt ']
+ assert named_params.keys() == [u' Position ', u' Aufstieg möglich ']
+ assert named_params.values() == [' 47.309820 N 9.986508 E ', ' Ja ']
def test_split_template():
def test_split_template():
class TemplateValidator(formencode.FancyValidator):
class TemplateValidator(formencode.FancyValidator):
+ def __init__(self, strip=True):
+ """If strip is True, the title, and the parameter keys and values are stripped in to_python."""
+ self.strip = (lambda s: s.strip()) if strip else (lambda s: s)
+
def to_python(self, value, state=None):
"""Takes a template, like u'{{Color|red|text=Any text}}' and translates it to a Python tuple
(title, anonym_params, named_params) where title is the template title,
def to_python(self, value, state=None):
"""Takes a template, like u'{{Color|red|text=Any text}}' and translates it to a Python tuple
(title, anonym_params, named_params) where title is the template title,
parts = value[2:-2].split(u'|')
# template name
parts = value[2:-2].split(u'|')
# template name
- title = parts[0].strip()
+ title = self.strip(parts[0])
if len(title) == 0:
raise formencode.Invalid(u'Empty template tilte.', value, state)
del parts[0]
if len(title) == 0:
raise formencode.Invalid(u'Empty template tilte.', value, state)
del parts[0]
while len(parts) > 0:
equalsign_pos = parts[0].find(u'=')
if equalsign_pos >= 0: break # named parameter
while len(parts) > 0:
equalsign_pos = parts[0].find(u'=')
if equalsign_pos >= 0: break # named parameter
- anonym_params.append(parts[0].strip())
+ anonym_params.append(self.strip(parts[0]))
del parts[0]
# named or numbered parameters
del parts[0]
# named or numbered parameters
if equalsign_pos < 0:
raise formencode.Invalid(u'Anonymous parameter after named parameter.', value, state)
key, sep, value = parts[0].partition(u'=')
if equalsign_pos < 0:
raise formencode.Invalid(u'Anonymous parameter after named parameter.', value, state)
key, sep, value = parts[0].partition(u'=')
if len(key) == 0:
raise formencode.Invalid(u'Empty key.', value, state)
if named_params.has_key(key):
raise formencode.Invalid(u'Duplicate key: "{0}"'.format(key), value, state)
if len(key) == 0:
raise formencode.Invalid(u'Empty key.', value, state)
if named_params.has_key(key):
raise formencode.Invalid(u'Duplicate key: "{0}"'.format(key), value, state)
- named_params[key] = value.strip()
+ named_params[key] = self.strip(value)
del parts[0]
return title, anonym_params, named_params
del parts[0]
return title, anonym_params, named_params