diff options
Diffstat (limited to 'tools/cru-py/crupest')
| -rw-r--r-- | tools/cru-py/crupest/template2.py | 45 | 
1 files changed, 0 insertions, 45 deletions
diff --git a/tools/cru-py/crupest/template2.py b/tools/cru-py/crupest/template2.py deleted file mode 100644 index ae096df..0000000 --- a/tools/cru-py/crupest/template2.py +++ /dev/null @@ -1,45 +0,0 @@ -import os.path -import re - -_template_filename_suffix = ".template" -_template_var_regex = r"\$([-_a-zA-Z0-9]+)" -_template_var_brace_regex = r"\$\{\s*([-_a-zA-Z0-9]+?)\s*\}" - - -class Template2: - -    @staticmethod -    def from_file(template_path: str) -> "Template2": -        if not template_path.endswith(_template_filename_suffix): -            raise Exception( -                "Template file must have a name ending with .template.") -        template_name = os.path.basename( -            template_path)[:-len(_template_filename_suffix)] -        with open(template_path, "r") as f: -            template = f.read() -        return Template2(template_name, template, template_path=template_path) - -    def __init__(self, template_name: str, template: str, *, template_path: str | None = None) -> None: -        self.template_name = template_name -        self.template = template -        self.template_path = template_path -        self.var_set = set() -        for match in re.finditer(_template_var_regex, self.template): -            self.var_set.add(match.group(1)) -        for match in re.finditer(_template_var_brace_regex, self.template): -            self.var_set.add(match.group(1)) - -    def partial_render(self, vars: dict[str, str]) -> "Template2": -        t = self.render(vars) -        return Template2(self.template_name, t, template_path=self.template_path) - -    def render(self, vars: dict[str, str]) -> str: -        for name in vars.keys(): -            if name not in self.var_set: -                raise ValueError(f"Invalid var name {name}.") - -        text = self.template -        for name, value in vars.items(): -            text = text.replace("$" + name, value) -            text = re.sub(r"\$\{\s*" + name + r"\s*\}", value, text) -        return text  | 
