mirror of
https://github.com/deadc0de6/dotdrop.git
synced 2026-02-15 22:00:05 +00:00
dynamically load jinja2 custom functions
This commit is contained in:
@@ -6,6 +6,7 @@ jinja2 template generator
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import inspect
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
@@ -49,13 +50,20 @@ class Templategen:
|
|||||||
# adding header method
|
# adding header method
|
||||||
self.env.globals['header'] = self._header
|
self.env.globals['header'] = self._header
|
||||||
# adding helper methods
|
# adding helper methods
|
||||||
self.env.globals['exists'] = jhelpers.exists
|
self._load_funcs_to_dic(jhelpers, self.env.globals)
|
||||||
self.env.globals['exists_in_path'] = jhelpers.exists_in_path
|
|
||||||
self.env.globals['basename'] = jhelpers.basename
|
|
||||||
self.env.globals['dirname'] = jhelpers.dirname
|
|
||||||
if self.debug:
|
if self.debug:
|
||||||
self.log.dbg('template additional variables: {}'.format(variables))
|
self.log.dbg('template additional variables: {}'.format(variables))
|
||||||
|
|
||||||
|
def _load_funcs_to_dic(self, mod, dic):
|
||||||
|
"""dynamically load functions from module to dic"""
|
||||||
|
for m in inspect.getmembers(mod):
|
||||||
|
name, func = m
|
||||||
|
if not inspect.isfunction(func):
|
||||||
|
continue
|
||||||
|
if self.debug:
|
||||||
|
self.log.dbg('load function \"{}\"'.format(name))
|
||||||
|
dic[name] = func
|
||||||
|
|
||||||
def generate(self, src):
|
def generate(self, src):
|
||||||
"""render template from path"""
|
"""render template from path"""
|
||||||
if not os.path.exists(src):
|
if not os.path.exists(src):
|
||||||
|
|||||||
Reference in New Issue
Block a user