Browse Source

Made line statement prefix configurable. Made 41805$ default line statement prefix

main
Lakshmi Vyasarajan 14 years ago
parent
commit
8036dae07f
2 changed files with 77 additions and 19 deletions
  1. +51
    -15
      hyde/ext/templates/jinja.py
  2. +26
    -4
      hyde/tests/test_jinja2template.py

+ 51
- 15
hyde/ext/templates/jinja.py View File

@@ -10,6 +10,7 @@ from hyde.fs import File, Folder
from hyde.model import Expando
from hyde.template import HtmlWrap, Template
from hyde.util import getLoggerWithNullHandler
from operator import attrgetter

from jinja2 import contextfunction, Environment
from jinja2 import FileSystemLoader, FileSystemBytecodeCache
@@ -499,21 +500,56 @@ class Jinja2Template(Template):
if hasattr(engine, 'preprocessor') else None)

self.loader = HydeLoader(self.sitepath, site, self.preprocessor)
self.env = Environment(loader=self.loader,
undefined=SilentUndefined,
line_statement_prefix='---',
trim_blocks=True,
bytecode_cache=FileSystemBytecodeCache(),
extensions=[IncludeText,
Spaceless,
Markdown,
Syntax,
Reference,
Refer,
YamlVar,
'jinja2.ext.do',
'jinja2.ext.loopcontrols',
'jinja2.ext.with_'])

default_extensions = [
IncludeText,
Spaceless,
Markdown,
Syntax,
Reference,
Refer,
YamlVar,
'jinja2.ext.do',
'jinja2.ext.loopcontrols',
'jinja2.ext.with_'
]

defaults = {
'line_statement_prefix': '$$$',
'trim_blocks': True,
}

settings = dict()
settings.update(defaults)
settings['extensions'] = list()
settings['extensions'].extend(default_extensions)

conf = {}

try:
conf = attrgetter('config.jinja2')(site).to_dict()
print conf
except AttributeError:
pass

settings.update(
dict([(key, conf[key]) for key in defaults if key in conf]))

extensions = conf.get('extensions', [])
if isinstance(extensions, list):
settings['extensions'].extend(extensions)
else:
settings['extensions'].append(extensions)

print settings

self.env = Environment(
loader=self.loader,
undefined=SilentUndefined,
line_statement_prefix=settings['line_statement_prefix'],
trim_blocks=True,
bytecode_cache=FileSystemBytecodeCache(),
extensions=settings['extensions'])
self.env.globals['media_url'] = media_url
self.env.globals['content_url'] = content_url
self.env.globals['engine'] = engine


+ 26
- 4
hyde/tests/test_jinja2template.py View File

@@ -152,10 +152,10 @@ def test_markdown_with_extensions():

def test_line_statements():
source = """
---markdown
$$$ markdown
### Heading 3

--- endmarkdown
$$$ endmarkdown
"""
t = Jinja2Template(JINJA2.path)
s = Site(JINJA2.path)
@@ -165,6 +165,28 @@ def test_line_statements():
html = t.render(source, {}).strip()
assert html == u'<h3 id="heading_3">Heading 3</h3>'

def test_line_statements_with_config():
source = """
%% markdown
### Heading 3

%% endmarkdown
"""
config = """
markdown:
extensions:
- headerid
jinja2:
line_statement_prefix: '%%'

"""
t = Jinja2Template(JINJA2.path)
s = Site(JINJA2.path)
s.config = Config(JINJA2.path, config_dict=yaml.load(config))
t.configure(s)
html = t.render(source, {}).strip()
assert html == u'<h3 id="heading_3">Heading 3</h3>'


TEST_SITE = File(__file__).parent.child_folder('_test')

@@ -228,9 +250,9 @@ class TestJinjaTemplate(object):
inc = File(TEST_SITE.child('content/inc.md'))
text = """
{% extends 'index.html' %}
--- block body
$$$ block body
<div id="article">Heya</div>
--- endblock
$$$ endblock
"""
site.load()
gen = Generator(site)


Loading…
Cancel
Save