comparison examples/doctest.txt @ 90:26b9c3bba04e

make the api for substitute() variables, output
author Jeff Hammel <jhammel@mozilla.com>
date Mon, 10 Jan 2011 21:33:03 -0800
parents 712a6d358083
children 672d2d3ee322
comparison
equal deleted inserted replaced
89:e055447376ab 90:26b9c3bba04e
15 15
16 >>> example = os.path.join(here, 'example.txt') 16 >>> example = os.path.join(here, 'example.txt')
17 >>> template = makeitso.PolyTemplate([example], interactive=False) 17 >>> template = makeitso.PolyTemplate([example], interactive=False)
18 >>> template.missing() 18 >>> template.missing()
19 set(['name']) 19 set(['name'])
20 >>> template.substitute(output=None, name='foo') 20 >>> template.substitute(dict(name='foo'))
21 Hello foo 21 Hello foo
22 22
23 Substitute to a buffer:: 23 Substitute to a buffer::
24 24
25 >>> buffer = StringIO() 25 >>> buffer = StringIO()
26 >>> template = makeitso.PolyTemplate([example], interactive=False) 26 >>> template = makeitso.PolyTemplate([example], interactive=False)
27 >>> template.substitute(output=buffer, name='bar') 27 >>> template.substitute(dict(name='bar'), output=buffer)
28 >>> buffer.getvalue().strip() 28 >>> buffer.getvalue().strip()
29 'Hello bar' 29 'Hello bar'
30 30
31 Substitute to a file:: 31 Substitute to a file::
32 32
33 >>> buffer = tempfile.mktemp() 33 >>> buffer = tempfile.mktemp()
34 >>> template = makeitso.PolyTemplate([example], interactive=False) 34 >>> template = makeitso.PolyTemplate([example], interactive=False)
35 >>> template.substitute(buffer, name='fleem') 35 >>> template.substitute(dict(name='fleem'), buffer)
36 >>> file(buffer).read().strip() 36 >>> file(buffer).read().strip()
37 'Hello fleem' 37 'Hello fleem'
38 >>> os.remove(buffer) 38 >>> os.remove(buffer)
39 39
40 Directory case:: 40 Directory case::
42 >>> exampledir = os.path.join(here, 'directory-example') 42 >>> exampledir = os.path.join(here, 'directory-example')
43 >>> tempdir = tempfile.mkdtemp() 43 >>> tempdir = tempfile.mkdtemp()
44 >>> template = makeitso.PolyTemplate([exampledir], interactive=False) 44 >>> template = makeitso.PolyTemplate([exampledir], interactive=False)
45 >>> sorted(template.missing()) 45 >>> sorted(template.missing())
46 ['bar', 'foo', 'subdir'] 46 ['bar', 'foo', 'subdir']
47 >>> template.substitute(tempdir, foo='It', bar='life', subdir='mysubdir') 47 >>> template.substitute(dict(foo='It', bar='life', subdir='mysubdir'), output=tempdir)
48 >>> sorted(os.listdir(tempdir)) 48 >>> sorted(os.listdir(tempdir))
49 ['foo.txt', 'mysubdir'] 49 ['foo.txt', 'mysubdir']
50 >>> file(os.path.join(tempdir, 'foo.txt')).read().strip() 50 >>> file(os.path.join(tempdir, 'foo.txt')).read().strip()
51 'It is a wonderful life' 51 'It is a wonderful life'
52 >>> os.listdir(os.path.join(tempdir, 'mysubdir')) 52 >>> os.listdir(os.path.join(tempdir, 'mysubdir'))
64 64
65 You need to provide output for mixing files and directory templates:: 65 You need to provide output for mixing files and directory templates::
66 66
67 >>> variables = dict([(i, i.title()) for i in variables]) 67 >>> variables = dict([(i, i.title()) for i in variables])
68 >>> try: 68 >>> try:
69 ... template.substitute(output=None, **variables) 69 ... template.substitute(variables)
70 ... except AssertionError, e: 70 ... except AssertionError, e:
71 ... pass 71 ... pass
72 >>> e 72 >>> e
73 AssertionError() 73 AssertionError()
74 74
75 Provide an output:: 75 Provide an output::
76 76
77 >>> template = makeitso.PolyTemplate([example, exampledir], interactive=False) 77 >>> template = makeitso.PolyTemplate([example, exampledir], interactive=False)
78 >>> template.substitute(tempdir, **variables) 78 >>> template.substitute(variables, tempdir)
79 >>> sorted(os.listdir(tempdir)) 79 >>> sorted(os.listdir(tempdir))
80 ['Subdir', 'example.txt', 'foo.txt'] 80 ['Subdir', 'example.txt', 'foo.txt']
81 >>> shutil.rmtree(tempdir) 81 >>> shutil.rmtree(tempdir)
82 82
83 Test API templates:: 83 Test API templates::
87 ... name = 'foo' 87 ... name = 'foo'
88 ... templates = ['example.txt'] 88 ... templates = ['example.txt']
89 ... vars = [Variable(name='name', default='bar')] 89 ... vars = [Variable(name='name', default='bar')]
90 >>> buffer = tempfile.mktemp() 90 >>> buffer = tempfile.mktemp()
91 >>> apitemplate = MyTemplate(interactive=False) 91 >>> apitemplate = MyTemplate(interactive=False)
92 >>> apitemplate.substitute(buffer) 92 >>> apitemplate.substitute({}, buffer)
93 >>> file(buffer).read().strip() 93 >>> file(buffer).read().strip()
94 'Hello bar' 94 'Hello bar'
95 >>> os.remove(buffer) 95 >>> os.remove(buffer)
96 96
97 Test to make sure permissions are preserved. This won't work on windows:: 97 Test to make sure permissions are preserved. This won't work on windows::
100 >>> f = file(buffer, 'w') 100 >>> f = file(buffer, 'w')
101 >>> print >> f, '#!/bin/bash\necho foo' 101 >>> print >> f, '#!/bin/bash\necho foo'
102 >>> f.close() 102 >>> f.close()
103 >>> os.chmod(buffer, 0755) 103 >>> os.chmod(buffer, 0755)
104 >>> uritemplate = makeitso.URITemplate(example, interactive=False) 104 >>> uritemplate = makeitso.URITemplate(example, interactive=False)
105 >>> uritemplate.substitute(buffer, name='bar') 105 >>> uritemplate.substitute(dict(name='bar'), buffer)
106 >>> ('%o' % os.stat(buffer).st_mode).endswith('755') 106 >>> ('%o' % os.stat(buffer).st_mode).endswith('755')
107 True 107 True
108 >>> os.remove(buffer) 108 >>> os.remove(buffer)