mirror of
https://github.com/norohind/SquadsActivityMonitor.git
synced 2025-04-04 17:30:01 +03:00
40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
"""
|
|
Features:
|
|
include files
|
|
insert variables from context dict
|
|
"""
|
|
from os.path import join
|
|
import re
|
|
templates_dir = 'templates'
|
|
|
|
variable_pattern: re.Pattern = re.compile(r'{{ .*? }}')
|
|
include_pattern: re.Pattern = re.compile(r'{{ @.*? }}')
|
|
|
|
|
|
def render(template_name: str, context: dict):
|
|
template_path = join(templates_dir, template_name)
|
|
template = get_file_content(template_path)
|
|
|
|
including = True
|
|
|
|
while including:
|
|
including = False
|
|
|
|
for include_statement in re.findall(include_pattern, template):
|
|
including = True
|
|
file_include = include_statement.split(' ')[1][1:]
|
|
include_content = get_file_content(join(templates_dir, file_include))
|
|
template = template.replace(include_statement, include_content)
|
|
|
|
for var_to_replace in re.findall(variable_pattern, template):
|
|
key = var_to_replace.split(' ')[1]
|
|
template = template.replace(var_to_replace, context[key])
|
|
|
|
return template
|
|
|
|
|
|
def get_file_content(filename: str) -> str:
|
|
with open(filename, 'r', encoding='utf-8') as file:
|
|
# it will throw exception if file doesn't exist
|
|
return file.read()
|