diff --git a/crc/services/jinja_service.py b/crc/services/jinja_service.py new file mode 100644 index 00000000..17671d48 --- /dev/null +++ b/crc/services/jinja_service.py @@ -0,0 +1,39 @@ +from jinja2 import Environment, DictLoader + + +class JinjaService: + """Service for Jinja2 templates. + +Includes the ability to embed templates inside templates, using task.data. + +-- In task.data +name = "Dan" +my_template = "Hi {{name}}, This is a jinja template too!" + +-- In Element Documentation +Please Introduce yourself. +{% include 'my_template' %} +Cool Right? + +-- Produces +Please Introduce yourself. +Hi Dan, This is a jinja template too! +Cool Right? +""" + + @staticmethod + def get_content(input_template, data): + templates = data + templates['main_template'] = input_template + jinja2_env = Environment(loader=DictLoader(templates)) + + try: + template = jinja2_env.get_template('main_template') + + except Exception: + # TODO: Should we deal w/ specific exceptions here? + # i.e., the ones in workflow_service._process_documentation + raise + + else: + return template.render(**data)