Commit ca322290 authored by nimrod's avatar nimrod
Browse files

Merge branch 'feature/doctest'

parents afbc5501 68340725
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
---
language: python
python: ["2.7", "3.2", "3.3", "3.4", "3.5"]
python: ["2.7", "3.3", "3.4", "3.5"]
dist: trusty
sudo: false
cache:
  - pip
matrix:
  allow_failure:
    - python: "3.2"

install:
  - pip install tox-travis
+0 −3
Original line number Diff line number Diff line
@@ -79,9 +79,6 @@ at: https://www.shore.co.il/git/.
TODO
----

- Add unit tests of filters using doctest.
- Fix combining dictionaries test.
- Fix Travis CI test on Python 3.2 (https://travis-ci.org/adarnimrod/template/jobs/187388235).
- Release on tagged commits to PyPI in Travis CI
  (https://docs.travis-ci.com/user/deployment/pypi/ and
  https://docs.travis-ci.com/user/encryption-keys/).
+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ setup(
    ],
    keywords='config configuration jinja template environment',
    packages=find_packages(),
    install_requires=['Jinja2', 'PyYAML'],
    install_requires=['Jinja2', 'PyYAML', 'six'],
    extras_require={
        'dev': ['tox'], },
    entry_points={
+71 −0
Original line number Diff line number Diff line
#!/usr/bin/env python
from __future__ import (absolute_import, division,
                        print_function, unicode_literals)
import six  # noqa: F401


def to_yaml(value):
    '''
    Converts given data structure to YAML form.
    Examples:

    >>> to_yaml([1,2,3])
    '[1, 2, 3]\\n'
    >>> to_yaml({'a': 1, 'b': 2})
    '{a: 1, b: 2}\\n'
    >>> to_yaml({1: {'a': [1,2,3]}})
    '1:\\n  a: [1, 2, 3]\\n'
    >>> to_yaml("abc")
    'abc\\n...\\n'
    '''
    from yaml import safe_dump
    return safe_dump(value)


def to_json(value):
    '''
    Converts given data structure to JSON form.
    Examples:

    >>> to_json([1,2,3])
    '[1, 2, 3]'
    >>> to_json({'b':2})
    '{"b": 2}'
    >>> to_json(2)
    '2'
    >>> to_json({1: {'a': [1,2,3]}})
    '{"1": {"a": [1, 2, 3]}}'
    '''
    from json import dumps
    return dumps(value)


def from_json(value):
    '''
    Returns native data structure from the given JSON string.
    Examples:

    >>> from_json('[1, 2, 3]')
    [1, 2, 3]
    >>> from_json('"a"') == six.text_type(u'a')
    True
    >>> from_json('{"1": {"a": [1, 2, 3]}}') == {u'1': {u'a': [1, 2, 3]}}
    True
    '''
    from json import loads
    return loads(value)


def from_yaml(value):
    '''
    Returns native data structure from the given YAML string.
    Examples:

    >>> from_yaml('a')
    'a'
    >>> from_yaml('[1, 2, 3]')
    [1, 2, 3]
    >>> from_yaml('{"1": {"a": [1, 2, 3]}}')
    {'1': {'a': [1, 2, 3]}}
    '''
    from yaml import safe_load
    return safe_load(value)


def pprint(value):
    '''
    Returns a pretty string representation of the data structure given.
    Examples:
    >>> pprint(1)
    '1'
    >>> output = pprint([{'first_name': 'John', 'last_name': 'Doe'}, {'first_name': 'Jane', 'last_name': 'Doe'}])  # noqa: E501
    >>> if six.PY3:
    ...  output == "[{'first_name': 'John', 'last_name': 'Doe'},\\n {'first_name': 'Jane', 'last_name': 'Doe'}]"
    ... elif six.PY2:
    ...  output == "[{u'first_name': u'John', u'last_name': u'Doe'},\\n {u'first_name': u'Jane', u'last_name': u'Doe'}]"
    ...
    True
    '''
    from pprint import pformat
    return pformat(value)


def combine(default, override):
    '''
    Returns a combined dictionary of the 2 dictionaries given (with the 2nd
    overriding the 1st).
    Examples:
    >>> combine({'a': 1, 'b': 2}, {'b': 3, 'c': 4}) == {'a': 1, 'b': 3, 'c': 4}
    True
    '''
    combined = default.copy()
    combined.update(override)
    return combined
+0 −27
Original line number Diff line number Diff line
@@ -14,31 +14,4 @@ export name='John'
template --output "$outfile" "$infile"
test "$(cat $outfile)" = "$name"

echo Testing JSON parsing.
export json='{"a": 1, "b": 2}'
echo '{{ (json|from_json)["a"] }}' > "$infile"
test "$(template $infile)" = "1"

echo Testing JSON output.
echo '{{ [1, 1+2, 3] | to_json }}' > "$infile"
test "$(template $infile)" = '[1, 3, 3]'

echo Testing YAML parsing.
export yaml='a: 1
b: 2'
echo '{{ (yaml|from_yaml)["a"] }}' > "$infile"
test "$(template $infile)" = "1"

echo Testing YAML output.
echo '{{ [1, 1+2, 3] | to_yaml }}' > "$infile"
test "$(template $infile)" = '[1, 3, 3]'

echo Testing pprint.
echo '{{ [1, ] + [2, ] }}' > "$infile"
test "$(template $infile)" = "[1, 2]"

# echo Testing combining dictionaries.
# echo '{{ {"a": 1, "b": 2}|combine({"a": 11, "c": 33}) }}' > "$infile"
# test "$(template $infile)" = "{'a': 11, 'c': 33, 'b': 2}"

rm "$infile" "$outfile"
Loading