Source code for tmep

from __future__ import annotations

from importlib import metadata
from typing import Optional

from tmep import doc, functions, template
from tmep.types import FunctionCollection, Values

__version__: str = metadata.version("tmep")


[docs] def parse( template: str, values: Optional[Values] = None, additional_functions: Optional[FunctionCollection] = None, functions: Optional[FunctionCollection] = None, ) -> str: """ Parse the given template string and substitute placeholders with values. :param template: The template string to parse, for example ``Hello $name!``. :param values: Optional dictionary of values to substitute in the template, for example ``{"name": "World"}``. :param additional_functions: Additional functions to use in the template. :param functions: Use the given functions instead of the default functions. :return: The parsed template string with placeholders substituted. """ if not functions: functions = Functions(values).get() if additional_functions: for k, v in additional_functions.items(): functions[k] = v if not values: values = {} return Template(template).substitute(values, functions)
Template = template.Template """ :see: :class:`tmep.template.Template` """ Functions = functions.DefaultTemplateFunctions """ :see: :class:`tmep.functions.DefaultTemplateFunctions` """ get_doc = doc.get_doc """ :see: :func:`tmep.doc.get_doc` """