##############################################################################
-def justify(pair, width=80, padding_with='.'):
+def _justify_pair(pair, width=80, padding_with='.'):
"""align first element along the left margin, second along the right, padding spaces"""
n = width - len(pair[0])
return '{key}{value:{c}>{n}}'.format(key=pair[0], value=pair[1], c=padding_with, n=n)
+
+
+def justify(content, width=80, padding_with='.'):
+ if isinstance(content, list):
+ return '\n'.join([justify(item, width, padding_with) for item in content])
+ elif isinstance(content, dict):
+ return '\n'.join([justify(item, width, padding_with) for item in content.items()])
+ else:
+ return _justify_pair(content, width, padding_with)
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+from jinja2 import Environment
+import pytest
from qtip.reporter import filters
-from jinja2 import Environment
-def test_justify():
+@pytest.mark.parametrize('template, content, output', [
+ ('{{ content|justify(width=6) }}', [('k1', 'v1'), ('k2', 'v2')], 'k1..v1\nk2..v2'),
+ ('{{ content|justify(width=6) }}', ('k1', 'v1'), 'k1..v1'),
+ ('{{ content|justify(width=6) }}', {'k1': 'v1'}, 'k1..v1')
+])
+def test_justify(template, content, output):
env = Environment()
env.filters['justify'] = filters.justify
- template = env.from_string('{{ kvpair|justify(width=10) }}')
- assert template.render(kvpair=('key', 'value')) == 'key..value'
+ template = env.from_string(template)
+ assert template.render(content=content) == output