From cb653deb367e86de9acccdecc48c4f40491f43dd Mon Sep 17 00:00:00 2001 From: Lakshmi Vyasarajan Date: Sat, 19 Feb 2011 12:10:45 +0530 Subject: [PATCH] Added to_dict method to expando --- hyde/ext/plugins/auto_extend.py | 2 +- hyde/model.py | 10 ++++++++++ hyde/tests/test_model.py | 20 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/hyde/ext/plugins/auto_extend.py b/hyde/ext/plugins/auto_extend.py index fe3b095..e9a7564 100644 --- a/hyde/ext/plugins/auto_extend.py +++ b/hyde/ext/plugins/auto_extend.py @@ -21,7 +21,7 @@ class AutoExtendPlugin(Plugin): an extends statement to the top of the file. """ - if not resource.is_processable or not resource.uses_template: + if not resource.uses_template: return text layout = None block = None diff --git a/hyde/model.py b/hyde/model.py index 06269a7..0330f8c 100644 --- a/hyde/model.py +++ b/hyde/model.py @@ -57,6 +57,16 @@ class Expando(object): else: return primitive + def to_dict(self): + """ + Reverse transform an expando to dict + """ + d = self.__dict__ + for k, v in d.iteritems(): + if isinstance(v, Expando): + d[k] = v.to_dict() + return d + class Context(object): """ diff --git a/hyde/tests/test_model.py b/hyde/tests/test_model.py index af45bf9..2c076d0 100644 --- a/hyde/tests/test_model.py +++ b/hyde/tests/test_model.py @@ -43,6 +43,26 @@ def test_expando_update(): assert x.a == 789 assert x.f == "opq" +def test_expando_to_dict(): + d = {"a": 123, "b": {"c": 456, "d": {"e": "abc"}}} + x = Expando(d) + assert d == x.to_dict() + +def test_expando_to_dict_with_update(): + d1 = {"a": 123, "b": "abc"} + x = Expando(d1) + d = {"b": {"c": 456, "d": {"e": "abc"}}, "f": "lmn"} + x.update(d) + expected = {} + expected.update(d1) + expected.update(d) + assert expected == x.to_dict() + d2 = {"a": 789, "f": "opq"} + y = Expando(d2) + x.update(y) + expected.update(d2) + assert expected == x.to_dict() + TEST_SITE = File(__file__).parent.child_folder('_test') import yaml