From 4fb6ba3154b947c264613b2ef34c98c24089577a Mon Sep 17 00:00:00 2001 From: Kostas Papadimitriou Date: Thu, 1 Dec 2011 16:58:08 +0200 Subject: [PATCH] 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