repytex/notes_tools/reports/texenv.py

62 lines
1.7 KiB
Python
Raw Normal View History

2016-11-08 08:07:03 +00:00
#!/usr/bin/env python
# encoding: utf-8
import jinja2, os
from .filters import includegraphics
2016-11-08 08:07:03 +00:00
2016-11-26 14:40:35 +00:00
import logging
2017-03-07 10:08:50 +00:00
logger = logging.getLogger(__name__)
2016-11-26 14:40:35 +00:00
2016-11-08 08:07:03 +00:00
__all__ = ["texenv"]
# Definition of jinja syntax for latex
texenv = jinja2.Environment(
block_start_string = '\Block{',
# Gros WTF!! Si on le met en maj ça ne marche pas alors que c'est en maj dans le template...
block_end_string = '}',
variable_start_string = '\Var{',
variable_end_string = '}',
2016-11-18 15:07:38 +00:00
comment_start_string = '\#{',
comment_end_string = '}',
line_statement_prefix = '%-',
line_comment_prefix = '%#',
2017-03-07 10:08:50 +00:00
loader = jinja2.ChoiceLoader([jinja2.PackageLoader("notes_tools.reports", "templates"),
2016-11-22 11:39:02 +00:00
jinja2.FileSystemLoader(['./']),
]),
2016-11-08 08:07:03 +00:00
extensions = ['jinja2.ext.do']
)
# Filters
2016-11-26 13:53:06 +00:00
from .filters import includegraphics
texenv.filters['includegraphics'] = includegraphics
2016-11-08 08:07:03 +00:00
2016-11-26 14:40:35 +00:00
def feed_template(target, datas, template):
2017-03-07 10:08:50 +00:00
""" Get the template and feed it to create reports
2016-11-26 14:40:35 +00:00
2017-03-07 10:08:50 +00:00
:param target: path where the report will be saved
2016-11-26 14:40:35 +00:00
:param datas: dictonnary to feed the template
:param template: the template
"""
logger.info("Getting template {}".format(template))
2017-03-07 10:08:50 +00:00
report = texenv.get_template(template)
2016-11-26 14:40:35 +00:00
path_to_target = target.dirname()
if not path_to_target.exists():
path_to_target.mkdir()
with open(target, "w") as f:
2017-03-07 10:08:50 +00:00
f.write(report.render(**datas, directory=path_to_target))
2016-11-26 14:40:35 +00:00
logger.info("{} est construit! Ya plus qu'à compiler!".format(target))
2017-03-07 10:08:50 +00:00
2016-11-08 08:07:03 +00:00
if __name__ == '__main__':
print(texenv.list_templates())
2017-03-07 10:08:50 +00:00
texenv.get_template("tpl_reports.tex")
2016-11-08 08:07:03 +00:00
# -----------------------------
# Reglages pour 'vim'
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
# cursor: 16 del