From 7815b31c5ee06bbb3d937b3fea22605fb10400be Mon Sep 17 00:00:00 2001 From: Kostas Papadimitriou Date: Thu, 1 Dec 2011 16:57:11 +0200 Subject: [PATCH 1/2] Expando `get` helper method Added a dict like `get` method to Expando class --- hyde/model.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hyde/model.py b/hyde/model.py index bef9a34..967df27 100644 --- a/hyde/model.py +++ b/hyde/model.py @@ -81,6 +81,12 @@ class Expando(object): result[k] = v return result + def get(self, key, default=None): + """ + Dict like get helper method + """ + return self.__dict__.get(key, default) + class Context(object): """ From 4fb6ba3154b947c264613b2ef34c98c24089577a Mon Sep 17 00:00:00 2001 From: Kostas Papadimitriou Date: Thu, 1 Dec 2011 16:58:08 +0200 Subject: [PATCH 2/2] LessCSSPlugin improvements Added import-path= option - Allow user to define import paths for less compiler Improved resource handling - Do not replace imports if resource uses_template option is False - Skip resources with `parse` meta option set to False (helpful to avoid parsing of helper less lib files) --- hyde/ext/plugins/less.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/hyde/ext/plugins/less.py b/hyde/ext/plugins/less.py index f724281..d64d706 100644 --- a/hyde/ext/plugins/less.py +++ b/hyde/ext/plugins/less.py @@ -22,12 +22,22 @@ class LessCSSPlugin(CLTransformer): def executable_name(self): return "lessc" + def _should_parse_resource(self, resource): + """ + Check user defined + """ + return getattr(resource, 'meta', {}).get('parse', True) + + def _should_replace_imports(self, resource): + return getattr(resource, 'meta', {}).get('uses_template', True) + def begin_site(self): """ Find all the less css files and set their relative deploy path. """ for resource in self.site.content.walk_resources(): - if resource.source_file.kind == 'less': + if resource.source_file.kind == 'less' and \ + self._should_parse_resource(resource): new_name = resource.source_file.name_without_extension + ".css" target_folder = File(resource.relative_deploy_path).parent resource.relative_deploy_path = target_folder.child(new_name) @@ -37,8 +47,11 @@ class LessCSSPlugin(CLTransformer): Replace @import statements with {% include %} statements. """ - if not resource.source_file.kind == 'less': + if not resource.source_file.kind == 'less' or not \ + self._should_parse_resource(resource) or not \ + self._should_replace_imports(resource): return text + import_finder = re.compile( '^\\s*@import\s+(?:\'|\")([^\'\"]*)(?:\'|\")\s*\;\s*$', re.MULTILINE) @@ -73,7 +86,8 @@ class LessCSSPlugin(CLTransformer): Read the generated file and return the text as output. Set the target path to have a css extension. """ - if not resource.source_file.kind == 'less': + if not resource.source_file.kind == 'less' or not \ + self._should_parse_resource(resource): return supported = [ @@ -82,7 +96,8 @@ class LessCSSPlugin(CLTransformer): ("compress", "x"), "O0", "O1", - "O2" + "O2", + "include-path=" ] less = self.app