add __get_parser method
This commit is contained in:
		| @@ -94,6 +94,38 @@ class Command(NoArgsCommand): | ||||
|                 loaders.append(loader) | ||||
|         return loaders | ||||
|  | ||||
|     def __get_parser(self, engine): | ||||
|         if engine == "jinja2": | ||||
|             # TODO load jinja settings | ||||
|             import jinja2 | ||||
|             import jinja2.ext | ||||
|             from compressor.parser.jinja2 import Jinja2Parser, url_for, SpacelessExtension | ||||
|             from compressor.contrib.jinja2ext import CompressorExtension | ||||
|  | ||||
|             extensions = [ | ||||
|                 CompressorExtension, | ||||
|                 SpacelessExtension, | ||||
|                 jinja2.ext.with_, | ||||
|                 jinja2.ext.do, | ||||
|             ] | ||||
|  | ||||
|             parser = Jinja2Parser( | ||||
|                 charset=settings.FILE_CHARSET, | ||||
|                 extensions=extensions, | ||||
|                 loader=jinja2.FileSystemLoader(settings.TEMPLATE_DIRS, encoding=settings.FILE_CHARSET), | ||||
|                 globals={"url_for": url_for}, | ||||
|                 filters={}, | ||||
|                 options={}, | ||||
|             ) | ||||
|  | ||||
|         elif engine == "django": | ||||
|             from compressor.parser.dj import DjangoParser | ||||
|             parser = DjangoParser(charset=settings.FILE_CHARSET) | ||||
|         else: | ||||
|             raise OfflineGenerationError("Invalid templating engine specified.") | ||||
|  | ||||
|         return parser | ||||
|  | ||||
|     def compress(self, log=None, **options): | ||||
|         """ | ||||
|         Searches templates containing 'compress' nodes and compresses them | ||||
| @@ -147,15 +179,7 @@ class Command(NoArgsCommand): | ||||
|             log.write("Found templates:\n\t" + "\n\t".join(templates) + "\n") | ||||
|  | ||||
|         engine = options.get("engine", "django") | ||||
|         if engine == "jinja2": | ||||
|             # TODO load jinja settings | ||||
|             from compressor.parser.jinja2 import Jinja2Parser | ||||
|             parser = Jinja2Parser(charset=settings.FILE_CHARSET, globals={}, filters={}, options={}) | ||||
|         elif engine == "django": | ||||
|             from compressor.parser.dj import DjangoParser | ||||
|             parser = DjangoParser(charset=settings.FILE_CHARSET) | ||||
|         else: | ||||
|             raise OfflineGenerationError("Invalid templating engine specified.") | ||||
|         parser = self.__get_parser(engine) | ||||
|  | ||||
|         compressor_nodes = SortedDict() | ||||
|         for template_name in templates: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lucas Tan
					Lucas Tan