add __get_parser method
This commit is contained in:
@@ -94,6 +94,38 @@ class Command(NoArgsCommand):
|
|||||||
loaders.append(loader)
|
loaders.append(loader)
|
||||||
return loaders
|
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):
|
def compress(self, log=None, **options):
|
||||||
"""
|
"""
|
||||||
Searches templates containing 'compress' nodes and compresses them
|
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")
|
log.write("Found templates:\n\t" + "\n\t".join(templates) + "\n")
|
||||||
|
|
||||||
engine = options.get("engine", "django")
|
engine = options.get("engine", "django")
|
||||||
if engine == "jinja2":
|
parser = self.__get_parser(engine)
|
||||||
# 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.")
|
|
||||||
|
|
||||||
compressor_nodes = SortedDict()
|
compressor_nodes = SortedDict()
|
||||||
for template_name in templates:
|
for template_name in templates:
|
||||||
|
|||||||
Reference in New Issue
Block a user