@@ -25,7 +25,7 @@ class DependsPlugin(Plugin): | |||||
The dependency can contain the following template variables: | The dependency can contain the following template variables: | ||||
node, resource, site, context. | node, resource, site, context. | ||||
The folloing strings are valid: | |||||
The following strings are valid: | |||||
'{node.module}/dependencies/{resource.source.name_without_extension}.inc' | '{node.module}/dependencies/{resource.source.name_without_extension}.inc' | ||||
'{context.dependency_folder}/{resource.source.name_without_extension}.{site.meta.depext}' | '{context.dependency_folder}/{resource.source.name_without_extension}.{site.meta.depext}' | ||||
""" | """ | ||||
@@ -35,9 +35,11 @@ class DependsPlugin(Plugin): | |||||
except AttributeError: | except AttributeError: | ||||
pass | pass | ||||
if not hasattr(resource, 'depends'): | |||||
if not hasattr(resource, 'depends') or not resource.depends: | |||||
resource.depends = [] | resource.depends = [] | ||||
resource.depends = resource.depends or [] | |||||
if isinstance(depends, basestring): | |||||
depends = [depends] | |||||
for dep in depends: | for dep in depends: | ||||
resource.depends.append(dep.format(node=resource.node, | resource.depends.append(dep.format(node=resource.node, | ||||
@@ -112,7 +112,18 @@ class Generator(object): | |||||
""" | """ | ||||
Gets the dependencies for a given resource. | 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): | def has_resource_changed(self, resource): | ||||
""" | """ | ||||
@@ -21,6 +21,9 @@ class TestDepends(object): | |||||
TEST_SITE.make() | TEST_SITE.make() | ||||
TEST_SITE.parent.child_folder( | TEST_SITE.parent.child_folder( | ||||
'sites/test_jinja').copy_contents_to(TEST_SITE) | '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): | def tearDown(self): | ||||
TEST_SITE.delete() | TEST_SITE.delete() | ||||
@@ -41,9 +44,14 @@ depends: index.html | |||||
gen = Generator(s) | gen = Generator(s) | ||||
gen.load_site_if_needed() | gen.load_site_if_needed() | ||||
gen.load_template_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)) | deps = list(gen.get_dependencies(res)) | ||||
assert len(deps) == 3 | assert len(deps) == 3 | ||||
assert 'helpers.html' in deps | assert 'helpers.html' in deps | ||||