Browse Source

Fixed depends plugin

main
Lakshmi Vyasarajan 14 years ago
parent
commit
e8d9629b59
3 changed files with 27 additions and 6 deletions
  1. +5
    -3
      hyde/ext/plugins/depends.py
  2. +12
    -1
      hyde/generator.py
  3. +10
    -2
      hyde/tests/ext/test_depends.py

+ 5
- 3
hyde/ext/plugins/depends.py View File

@@ -25,7 +25,7 @@ class DependsPlugin(Plugin):
The dependency can contain the following template variables:
node, resource, site, context.

The folloing strings are valid:
The following strings are valid:
'{node.module}/dependencies/{resource.source.name_without_extension}.inc'
'{context.dependency_folder}/{resource.source.name_without_extension}.{site.meta.depext}'
"""
@@ -35,9 +35,11 @@ class DependsPlugin(Plugin):
except AttributeError:
pass

if not hasattr(resource, 'depends'):
if not hasattr(resource, 'depends') or not resource.depends:
resource.depends = []
resource.depends = resource.depends or []

if isinstance(depends, basestring):
depends = [depends]

for dep in depends:
resource.depends.append(dep.format(node=resource.node,


+ 12
- 1
hyde/generator.py View File

@@ -112,7 +112,18 @@ class Generator(object):
"""
Gets the dependencies for a given resource.
"""
return self.template.get_dependencies(resource.relative_path)
deps = []
if hasattr(resource, 'depends'):
user_deps = resource.depends
for dep in user_deps:
deps.append(dep)
deps.extend(self.template.get_dependencies(dep))

deps.extend(self.template.get_dependencies(resource.relative_path))
deps = list(set(deps))
if None in deps:
deps.remove(None)
return deps

def has_resource_changed(self, resource):
"""


+ 10
- 2
hyde/tests/ext/test_depends.py View File

@@ -21,6 +21,9 @@ class TestDepends(object):
TEST_SITE.make()
TEST_SITE.parent.child_folder(
'sites/test_jinja').copy_contents_to(TEST_SITE)
TEST_SITE.parent.child_folder(
'templates/jinja2').copy_contents_to(
TEST_SITE.child_folder('content'))

def tearDown(self):
TEST_SITE.delete()
@@ -41,9 +44,14 @@ depends: index.html
gen = Generator(s)
gen.load_site_if_needed()
gen.load_template_if_needed()
res = s.content.resource_from_relative_path('inc.md')
def dateformat(x):
return x.strftime('%Y-%m-%d')
gen.template.env.filters['dateformat'] = dateformat
gen.generate_resource_at_path(inc.name)
res = s.content.resource_from_relative_path(inc.name)
assert len(res.depends) == 1
assert 'index.html' in res.depends
deps = list(gen.get_dependencies(res))

assert len(deps) == 3

assert 'helpers.html' in deps


Loading…
Cancel
Save