Compile the regexs on plugin load instead of every time a resource is processed.main
| @@ -17,6 +17,10 @@ class LessCSSPlugin(CLTransformer): | |||||
| def __init__(self, site): | def __init__(self, site): | ||||
| super(LessCSSPlugin, self).__init__(site) | super(LessCSSPlugin, self).__init__(site) | ||||
| self.import_finder = \ | |||||
| re.compile('^\\s*@import\s+(?:\'|\")([^\'\"]*)(?:\'|\")\s*\;\s*$', | |||||
| re.MULTILINE) | |||||
| @property | @property | ||||
| def executable_name(self): | def executable_name(self): | ||||
| @@ -51,10 +55,6 @@ class LessCSSPlugin(CLTransformer): | |||||
| not self._should_replace_imports(resource): | not self._should_replace_imports(resource): | ||||
| return text | return text | ||||
| import_finder = re.compile( | |||||
| '^\\s*@import\s+(?:\'|\")([^\'\"]*)(?:\'|\")\s*\;\s*$', | |||||
| re.MULTILINE) | |||||
| def import_to_include(match): | def import_to_include(match): | ||||
| if not match.lastindex: | if not match.lastindex: | ||||
| return '' | return '' | ||||
| @@ -68,7 +68,7 @@ class LessCSSPlugin(CLTransformer): | |||||
| "Cannot import from path [%s]" % afile.path) | "Cannot import from path [%s]" % afile.path) | ||||
| ref.is_processable = False | ref.is_processable = False | ||||
| return self.template.get_include_statement(ref.relative_path) | return self.template.get_include_statement(ref.relative_path) | ||||
| text = import_finder.sub(import_to_include, text) | |||||
| text = self.import_finder.sub(import_to_include, text) | |||||
| return text | return text | ||||
| @@ -120,6 +120,9 @@ class StylusPlugin(CLTransformer): | |||||
| def __init__(self, site): | def __init__(self, site): | ||||
| super(StylusPlugin, self).__init__(site) | super(StylusPlugin, self).__init__(site) | ||||
| self.import_finder = \ | |||||
| re.compile('^\\s*@import\s+(?:\'|\")([^\'\"]*)(?:\'|\")\s*\;?\s*$', | |||||
| re.MULTILINE) | |||||
| def begin_site(self): | def begin_site(self): | ||||
| """ | """ | ||||
| @@ -138,9 +141,6 @@ class StylusPlugin(CLTransformer): | |||||
| if not resource.source_file.kind == 'styl': | if not resource.source_file.kind == 'styl': | ||||
| return | return | ||||
| import_finder = re.compile( | |||||
| '^\\s*@import\s+(?:\'|\")([^\'\"]*)(?:\'|\")\s*\;?\s*$', | |||||
| re.MULTILINE) | |||||
| def import_to_include(match): | def import_to_include(match): | ||||
| """ | """ | ||||
| @@ -170,7 +170,7 @@ class StylusPlugin(CLTransformer): | |||||
| "\n" | "\n" | ||||
| return '@import "' + path + '"\n' | return '@import "' + path + '"\n' | ||||
| text = import_finder.sub(import_to_include, text) | |||||
| text = self.import_finder.sub(import_to_include, text) | |||||
| return text | return text | ||||
| @property | @property | ||||
| @@ -48,6 +48,9 @@ class MetaPlugin(Plugin): | |||||
| def __init__(self, site): | def __init__(self, site): | ||||
| super(MetaPlugin, self).__init__(site) | super(MetaPlugin, self).__init__(site) | ||||
| self.yaml_finder = re.compile( | |||||
| r"^\s*(?:---|===)\s*\n((?:.|\n)+?)\n\s*(?:---|===)\s*\n*", | |||||
| re.MULTILINE) | |||||
| def begin_site(self): | def begin_site(self): | ||||
| """ | """ | ||||
| @@ -77,10 +80,7 @@ class MetaPlugin(Plugin): | |||||
| Once loaded, remove the meta area from the text. | Once loaded, remove the meta area from the text. | ||||
| """ | """ | ||||
| self.logger.debug("Trying to load metadata from resource [%s]" % resource) | self.logger.debug("Trying to load metadata from resource [%s]" % resource) | ||||
| yaml_finder = re.compile( | |||||
| r"^\s*(?:---|===)\s*\n((?:.|\n)+?)\n\s*(?:---|===)\s*\n*", | |||||
| re.MULTILINE) | |||||
| match = re.match(yaml_finder, text) | |||||
| match = re.match(self.yaml_finder, text) | |||||
| if not match: | if not match: | ||||
| self.logger.debug("No metadata found in resource [%s]" % resource) | self.logger.debug("No metadata found in resource [%s]" % resource) | ||||
| data = {} | data = {} | ||||
| @@ -178,14 +178,17 @@ class SyntextPlugin(TextyPlugin): | |||||
| return super(SyntextPlugin, self).text_to_tag(match, start) | return super(SyntextPlugin, self).text_to_tag(match, start) | ||||
| import re | |||||
| class TextlinksPlugin(Plugin): | class TextlinksPlugin(Plugin): | ||||
| """ | """ | ||||
| The plugin class for syntax text replacement. | The plugin class for syntax text replacement. | ||||
| """ | """ | ||||
| def __init__(self, site): | def __init__(self, site): | ||||
| super(TextlinksPlugin, self).__init__(site) | super(TextlinksPlugin, self).__init__(site) | ||||
| import re | |||||
| self.content_link = re.compile('\[\[([^\]^!][^\]]*)\]\]', | |||||
| re.UNICODE|re.MULTILINE) | |||||
| self.media_link = re.compile('\[\[\!\!([^\]]*)\]\]', | |||||
| re.UNICODE|re.MULTILINE) | |||||
| def begin_text_resource(self, resource, text): | def begin_text_resource(self, resource, text): | ||||
| """ | """ | ||||
| @@ -198,13 +201,11 @@ class TextlinksPlugin(Plugin): | |||||
| """ | """ | ||||
| if not resource.uses_template: | if not resource.uses_template: | ||||
| return text | return text | ||||
| content_link = re.compile('\[\[([^\]^!][^\]]*)\]\]', re.UNICODE|re.MULTILINE) | |||||
| media_link = re.compile('\[\[\!\!([^\]]*)\]\]', re.UNICODE|re.MULTILINE) | |||||
| def replace_content(match): | def replace_content(match): | ||||
| return self.template.get_content_url_statement(match.groups(1)[0]) | return self.template.get_content_url_statement(match.groups(1)[0]) | ||||
| def replace_media(match): | def replace_media(match): | ||||
| return self.template.get_media_url_statement(match.groups(1)[0]) | return self.template.get_media_url_statement(match.groups(1)[0]) | ||||
| text = content_link.sub(replace_content, text) | |||||
| text = media_link.sub(replace_media, text) | |||||
| text = self.content_link.sub(replace_content, text) | |||||
| text = self.media_link.sub(replace_media, text) | |||||
| return text | return text | ||||