From 025f6092397b7777a8d902385f5128e99f0fcf6a Mon Sep 17 00:00:00 2001 From: Lakshmi Vyasarajan Date: Tue, 8 Feb 2011 16:03:00 +0530 Subject: [PATCH] Added support for multi level references --- hyde/ext/templates/jinja.py | 10 +++++++ hyde/tests/test_jinja2template.py | 49 ++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/hyde/ext/templates/jinja.py b/hyde/ext/templates/jinja.py index f3327e2..ed8e83b 100644 --- a/hyde/ext/templates/jinja.py +++ b/hyde/ext/templates/jinja.py @@ -265,7 +265,13 @@ class Refer(Extension): includeNode.ignore_missing = False includeNode.template = template + temp = parser.free_identifier(lineno) + return [ + nodes.Assign( + nodes.Name(temp.name, 'store'), + nodes.Name(MARKINGS, 'load') + ).set_lineno(lineno), nodes.Assign( nodes.Name(MARKINGS, 'store'), nodes.Const({})).set_lineno(lineno), @@ -295,6 +301,10 @@ class Refer(Extension): nodes.Getitem(nodes.Name(namespace, 'load'), nodes.Const('parent_resource'), 'load') ).set_lineno(lineno), + nodes.Assign( + nodes.Name(MARKINGS, 'store'), + nodes.Name(temp.name, 'load') + ).set_lineno(lineno), ] def _push_resource(self, namespace, site, resource, template, caller): diff --git a/hyde/tests/test_jinja2template.py b/hyde/tests/test_jinja2template.py index 27b6e1b..652cfff 100644 --- a/hyde/tests/test_jinja2template.py +++ b/hyde/tests/test_jinja2template.py @@ -128,6 +128,7 @@ def assert_markdown_typogrify_processed_well(include_text, includer_text): gen.load_template_if_needed() template = gen.template html = template.render(includer_text, {}).strip() + print html assert html q = PyQuery(html) assert "is_processable" not in html @@ -200,7 +201,7 @@ class TestJinjaTemplate(object): deps = list(t.get_dependencies('inc.md')) assert len(deps) == 1 - + assert not deps[0] @@ -314,6 +315,52 @@ Hyde & Jinja. assert "mark" not in html assert "reference" not in html + def test_two_level_refer_with_var(self): + text = """ +=== +is_processable: False +=== +
+{% filter markdown|typogrify %} +{% mark heading %} +This is a heading +================= +{% endmark %} +{% reference content %} +Hyde & Jinja. +{% endreference %} +{% endfilter %} +
+""" + + text2 = """ +{% set super = 'super.md' %} +{% refer to super as sup %} +
+{% mark child %} +{{ sup.heading }} +{% endmark %} +{% mark cont %} +{{ sup.content }} +{% endmark %} +
+""" + text3 = """ +{% set incu = 'inc.md' %} +{% refer to incu as inc %} +{% filter markdown|typogrify %} +{{ inc.child }} +{{ inc.cont }} +{% endfilter %} +""" + + superinc = File(TEST_SITE.child('content/super.md')) + superinc.write(text) + + html = assert_markdown_typogrify_processed_well(text2, text3) + assert "mark" not in html + assert "reference" not in html + def test_refer_with_var(self): text = """