Browse Source

Added include text extension

main
Lakshmi Vyasarajan 14 years ago
parent
commit
364fdeeec8
3 changed files with 54 additions and 39 deletions
  1. +6
    -6
      README.markdown
  2. +24
    -1
      hyde/ext/templates/jinja.py
  3. +24
    -32
      hyde/tests/test_jinja2template.py

+ 6
- 6
README.markdown View File

@@ -11,7 +11,7 @@ also take a look at the [cloudpanic source][cp] for a reference implementation.
[Here](http://groups.google.com/group/hyde-dev/browse_thread/thread/2a143bd2081b3322) is [Here](http://groups.google.com/group/hyde-dev/browse_thread/thread/2a143bd2081b3322) is
the initial announcement of the project. the initial announcement of the project.


# Installation
## Installation


Hyde supports both python 2.7 and 2.6. Hyde supports both python 2.7 and 2.6.


@@ -28,7 +28,7 @@ You can choose to install hyde by running


python setup.py install python setup.py install


# Creating a new hyde site
## Creating a new hyde site


The new version of Hyde uses the `argparse` module and hence support subcommands. The new version of Hyde uses the `argparse` module and hence support subcommands.


@@ -38,12 +38,12 @@ The new version of Hyde uses the `argparse` module and hence support subcommands
will create a new hyde site using the test layout. will create a new hyde site using the test layout.




# Generating the hyde site
## Generating the hyde site


cd ~/test_site cd ~/test_site
hyde gen hyde gen


# Serving the website
## Serving the website


cd ~/test_site cd ~/test_site
hyde serve hyde serve
@@ -54,7 +54,7 @@ The server also regenerates on demand. As long as the server is running,
you can make changes to your source and refresh the browser to view the changes. you can make changes to your source and refresh the browser to view the changes.




# A brief list of features
## A brief list of features




1. Support for multiple templates (although only `Jinja2` is currently implemented) 1. Support for multiple templates (although only `Jinja2` is currently implemented)
@@ -69,7 +69,7 @@ you can make changes to your source and refresh the browser to view the changes.
now provide additional syntactic sugar to make the content more readable. See now provide additional syntactic sugar to make the content more readable. See
`blockdown` and `autoextend` plugin for examples. `blockdown` and `autoextend` plugin for examples.


# Next Steps
## Next Steps


1. Documentation 1. Documentation
2. Default Layouts 2. Default Layouts


+ 24
- 1
hyde/ext/templates/jinja.py View File

@@ -63,6 +63,28 @@ class Markdown(Extension):
output = caller().strip() output = caller().strip()
return markdown(self.environment, output) return markdown(self.environment, output)


class IncludeText(Extension):

tags = set(['includetext'])

def parse(self, parser):
node = parser.parse_include()
return nodes.CallBlock(
self.call_method('_render_include_text', [], [], None, None),
[], [], [node]
).set_lineno(node.lineno)

def _render_include_text(self, caller=None):
if not caller:
return ''
output = caller().strip()
output = markdown(self.environment, output)
if 'typogrify' in self.environment.filters:
typo = self.environment.filters['typogrify']
output = typo(output)
return output


class HydeLoader(FileSystemLoader): class HydeLoader(FileSystemLoader):


def __init__(self, sitepath, site, preprocessor=None): def __init__(self, sitepath, site, preprocessor=None):
@@ -108,7 +130,8 @@ class Jinja2Template(Template):
self.env = Environment(loader=self.loader, self.env = Environment(loader=self.loader,
undefined=SilentUndefined, undefined=SilentUndefined,
trim_blocks=True, trim_blocks=True,
extensions=[Markdown,
extensions=[IncludeText,
Markdown,
'jinja2.ext.do', 'jinja2.ext.do',
'jinja2.ext.loopcontrols', 'jinja2.ext.loopcontrols',
'jinja2.ext.with_']) 'jinja2.ext.with_'])


+ 24
- 32
hyde/tests/test_jinja2template.py View File

@@ -151,6 +151,25 @@ def create_test_site():
def delete_test_site(): def delete_test_site():
TEST_SITE.delete() TEST_SITE.delete()


@nottest
def assert_markdown_typogrify_processed_well(include_text, includer_text):
site = Site(TEST_SITE)
site.config.plugins = ['hyde.ext.plugins.meta.MetaPlugin']
inc = File(TEST_SITE.child('content/inc.md'))
inc.write(include_text)
site.load()
gen = Generator(site)
gen.load_template_if_needed()
template = gen.template
html = template.render(includer_text, {}).strip()
assert html
q = PyQuery(html)
assert "is_processable" not in html
assert "This is a" in q("h1").text()
assert "heading" in q("h1").text()
assert q(".amp").length == 1


@with_setup(create_test_site, delete_test_site) @with_setup(create_test_site, delete_test_site)
def test_can_include_templates_with_processing(): def test_can_include_templates_with_processing():
text = """ text = """
@@ -172,25 +191,10 @@ Hyde & Jinja.
{% include "inc.md" %} {% include "inc.md" %}


""" """
site = Site(TEST_SITE)
site.config.plugins = ['hyde.ext.plugins.meta.MetaPlugin']
inc = File(TEST_SITE.child('content/inc.md'))
inc.write(text)
site.load()
gen = Generator(site)
gen.load_template_if_needed()
template = gen.template
html = template.render(text2, {}).strip()
assert html
q = PyQuery(html)
assert "is_processable" not in html
assert "This is a" in q("h1").text()
assert "heading" in q("h1").text()
assert q(".amp").length == 1
assert_markdown_typogrify_processed_well(text, text2)




#@with_setup(create_test_site, delete_test_site)
@nottest
@with_setup(create_test_site, delete_test_site)
def test_includetext(): def test_includetext():
text = """ text = """
=== ===
@@ -200,24 +204,12 @@ is_processable: False
This is a heading This is a heading
================= =================


An "&".
Hyde & Jinja.


""" """


text2 = """ text2 = """
{% includetext inc.md %}
{% includetext "inc.md" %}


""" """
site = Site(TEST_SITE)
inc = File(TEST_SITE.child('content/inc.md'))
inc.write(text)

site.load()
gen = Generator(site)
gen.load_template_if_needed()
template = gen.template
html = template.render(text2, {}).strip()
assert html
q = PyQuery(html)
assert q("h1").length == 1
assert q(".amp").length == 1
assert_markdown_typogrify_processed_well(text, text2)

Loading…
Cancel
Save