| Armin Ronacher | 0a1742e | 2007-03-03 21:58:44 +0100 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | """ |
| 3 | jinja webpage generator |
| 4 | ~~~~~~~~~~~~~~~~~~~~~~~ |
| 5 | """ |
| 6 | import os |
| 7 | from codecs import open |
| 8 | from jinja import Environment, FileSystemLoader |
| 9 | from jinja.filters import stringfilter |
| 10 | from pygments import highlight |
| 11 | from pygments.lexers import get_lexer_by_name |
| 12 | from pygments.formatters import HtmlFormatter |
| 13 | |
| 14 | |
| 15 | formatter = HtmlFormatter(cssclass='syntax', encoding=None, style='pastie') |
| 16 | |
| Armin Ronacher | 34a18bf | 2007-03-11 15:09:44 +0100 | [diff] [blame^] | 17 | env = Environment('<%', '%>', '<%=', '%>', loader=FileSystemLoader('.', |
| 18 | cache_folder='/tmp'), trim_blocks=True) |
| Armin Ronacher | 0a1742e | 2007-03-03 21:58:44 +0100 | [diff] [blame] | 19 | env.filters['pygmentize'] = stringfilter(lambda v, l: |
| 20 | highlight(v.strip(), get_lexer_by_name(l), formatter)) |
| 21 | |
| 22 | |
| 23 | def get_files(folder): |
| 24 | for fn in os.listdir(folder): |
| 25 | fn = os.path.join(folder, fn) |
| 26 | if os.path.isdir(fn): |
| 27 | for item in get_files(fn): |
| 28 | yield item |
| 29 | elif fn.endswith('.tmpl'): |
| 30 | yield fn |
| 31 | |
| 32 | |
| 33 | for filename in get_files('.'): |
| 34 | root = './' + ''.join(['../' for _ in os.path.dirname(filename). |
| 35 | split(os.path.sep)[1:]]) |
| 36 | |
| 37 | t = env.get_template(filename) |
| 38 | f = open(filename[:-5] + '.html', 'w', 'utf-8') |
| 39 | f.write(t.render( |
| 40 | file_id=filename[2:-5], |
| 41 | root=root |
| 42 | )) |
| 43 | f.close() |
| 44 | |
| 45 | f = file('static/pygments.css', 'w') |
| 46 | f.write(formatter.get_style_defs('.syntax')) |
| 47 | f.close() |