view examples/doctest.txt @ 76:7909dfaef33b

note about adding more metadata
author Jeff Hammel <jhammel@mozilla.com>
date Sat, 08 Jan 2011 10:53:17 -0800
parents a0f7bfa98755
children 3571417ef92e
line wrap: on
line source

MakeItSo!
=========

Boilerplate:

    >>> import makeitso
    >>> import os
    >>> import shutil
    >>> import tempfile
    >>> from StringIO import StringIO

Basic functionality:

    >>> example = os.path.join(here, 'example.txt')
    >>> template = makeitso.PolyTemplate([example], interactive=False)
    >>> template.missing()
    set(['name'])
    >>> template.substitute(name='foo')
    Hello foo
    
Substitute to a buffer:

    >>> buffer = StringIO()
    >>> template = makeitso.PolyTemplate([example], output=buffer, interactive=False)
    >>> template.substitute(name='bar')
    >>> buffer.getvalue().strip()
    'Hello bar'

Substitute to a file:

    >>> buffer = tempfile.mktemp()
    >>> template = makeitso.PolyTemplate([example], output=buffer, interactive=False)
    >>> template.substitute(name='fleem')
    >>> file(buffer).read().strip()
    'Hello fleem'
    >>> os.remove(buffer)

Directory case::

    >>> exampledir = os.path.join(here, 'directory-example')
    >>> tempdir = tempfile.mkdtemp()
    >>> template = makeitso.PolyTemplate([exampledir], output=tempdir, interactive=False)
    >>> sorted(template.missing())
    ['bar', 'foo', 'subdir']
    >>> template.substitute(foo='It', bar='life', subdir='mysubdir')
    >>> sorted(os.listdir(tempdir))
    ['foo.txt', 'mysubdir']
    >>> file(os.path.join(tempdir, 'foo.txt')).read().strip()
    'It is a wonderful life'
    >>> os.listdir(os.path.join(tempdir, 'mysubdir'))
    ['life.txt']
    >>> file(os.path.join(tempdir, 'mysubdir', 'life.txt')).read().strip()
    'It'
    >>> shutil.rmtree(tempdir)

Mixed case::

    >>> template = makeitso.PolyTemplate([example, exampledir], interactive=False)
    >>> variables = sorted(template.missing())
    >>> variables
    ['bar', 'foo', 'name', 'subdir']

You need to provide output for mixing files and directory templates::

    >>> variables = dict([(i, i.title()) for i in variables])
    >>> try:
    ...    template.substitute(**variables)
    ... except AssertionError, e:
    ...    pass
    >>> e
    AssertionError('Must specify output ...

Provide an output::

    >>> template = makeitso.PolyTemplate([example, exampledir], output=tempdir, interactive=False)
    >>> template.substitute(**variables)
    >>> sorted(os.listdir(tempdir))
    ['Subdir', 'example.txt', 'foo.txt']
    >>> shutil.rmtree(tempdir)

Test API templates::

    >>> from makeitso.template import MakeItSoTemplate, Variable
    >>> class MyTemplate(MakeItSoTemplate):
    ...    name = 'foo'
    ...    templates = ['example.txt']
    ...    vars = [Variable(name='name', default='bar')]
    >>> buffer = tempfile.mktemp()
    >>> apitemplate = MyTemplate(output=buffer)
    >>> apitemplate.substitute()
    >>> file(buffer).read().strip()
    'Hello bar'
    >>> os.remove(buffer)