Browse Source

Ensured providers work in the same way as context data and metadata (Issue #29)

main
Lakshmi Vyasarajan 14 years ago
parent
commit
dd8fae1cbc
2 changed files with 59 additions and 2 deletions
  1. +2
    -2
      hyde/model.py
  2. +57
    -0
      hyde/tests/test_generate.py

+ 2
- 2
hyde/model.py View File

@@ -45,7 +45,7 @@ class Expando(object):
Sets the expando attribute after Sets the expando attribute after
transforming the value. transforming the value.
""" """
setattr(self, key.encode('utf-8'), self.transform(value))
setattr(self, str(key).encode('utf-8'), self.transform(value))


def transform(self, primitive): def transform(self, primitive):
""" """
@@ -91,7 +91,7 @@ class Context(object):
for provider_name, resource_name in ctx.providers.__dict__.items(): for provider_name, resource_name in ctx.providers.__dict__.items():
res = File(Folder(sitepath).child(resource_name)) res = File(Folder(sitepath).child(resource_name))
if res.exists: if res.exists:
context[provider_name] = yaml.load(res.read_all())
context[provider_name] = Expando(yaml.load(res.read_all()))
except AttributeError: except AttributeError:
# No context data found # No context data found
pass pass


+ 57
- 0
hyde/tests/test_generate.py View File

@@ -161,3 +161,60 @@ main:
assert "home" in out assert "home" in out
assert "articles" in out assert "articles" in out
assert "projects" in out assert "projects" in out

def test_context_providers_equivalence(self):
import yaml
events = """
2011:
-
title: "one event"
location: "a city"
-
title: "one event"
location: "a city"

2010:
-
title: "one event"
location: "a city"
-
title: "one event"
location: "a city"
"""
events_dict = yaml.load(events)
config_dict = dict(context=dict(
data=dict(events1=events_dict),
providers=dict(events2="events.yaml")
))
text = """
{%% extends "base.html" %%}

{%% block main %%}
<ul>
{%% for year, eventlist in %s %%}
<li>
<h1>{{ year }}</h1>
<ul>
{%% for event in eventlist %%}
<li>{{ event.title }}-{{ event.location }}</li>
{%% endfor %%}
</ul>
</li>
{%% endfor %%}
</ul>
{%% endblock %%}
"""

File(TEST_SITE.child('events.yaml')).write(events)
f1 = File(TEST_SITE.child('content/text1.html'))
f2 = File(TEST_SITE.child('content/text2.html'))
f1.write(text % "events1")
f2.write(text % "events2")
site = Site(TEST_SITE, Config(TEST_SITE, config_dict=config_dict))
site.load()
gen = Generator(site)
gen.generate_all()
left = File(site.config.deploy_root_path.child(f1.name)).read_all()
right = File(site.config.deploy_root_path.child(f2.name)).read_all()
assert left == right


Loading…
Cancel
Save