diff --git a/src/rougail/template/engine/creole_legacy.py b/src/rougail/template/engine/creole_legacy.py index b002d90c..b40ed2fc 100644 --- a/src/rougail/template/engine/creole_legacy.py +++ b/src/rougail/template/engine/creole_legacy.py @@ -74,6 +74,27 @@ class IsDefined: return varname in self.context +class CreoleClient(): + def get(self, path): + path = path.replace('/', '.') + if path.startswith('.'): + path = path[1:] + if '.' not in path: + return self.context[path] + else: + root, path = path.split('.', 1) + obj = self.context[root] + for var in path.split('.'): + obj = getattr(obj, var) + return obj + + +def is_empty(data): + if str(data) in ['', '""', "''", "[]", "['']", '[""]', "None"]: + return True + return False + + class CheetahTemplate(oriCheetahTemplate): def __init__(self, filename: str, @@ -82,7 +103,12 @@ class CheetahTemplate(oriCheetahTemplate): eosfunc: Dict, extra_context: Dict, ): + creole_client = CreoleClient() + creole_client.context=context extra_context['is_defined'] = IsDefined(context) + extra_context['creole_client'] = creole_client + extra_context['is_empty'] = is_empty + extra_context['_creole_filename'] = extra_context['rougail_filename'] super().__init__(filename, source, context, eosfunc, extra_context)