mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-29 19:35:20 +02:00
feat(automation): add recursive render_value to templating
This commit is contained in:
parent
cb42b3a84f
commit
8b87d179e9
2 changed files with 13 additions and 1 deletions
|
|
@ -3,10 +3,11 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from .context import build_run_context
|
||||
from .render import evaluate_predicate, render_template
|
||||
from .render import evaluate_predicate, render_template, render_value
|
||||
|
||||
__all__ = [
|
||||
"build_run_context",
|
||||
"evaluate_predicate",
|
||||
"render_template",
|
||||
"render_value",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -16,3 +16,14 @@ def render_template(template: str, context: Mapping[str, Any]) -> str:
|
|||
def evaluate_predicate(expression: str, context: Mapping[str, Any]) -> bool:
|
||||
"""Evaluate a Jinja expression (not a template body) and coerce to bool."""
|
||||
return bool(ENV.compile_expression(expression)(**context))
|
||||
|
||||
|
||||
def render_value(value: Any, context: Mapping[str, Any]) -> Any:
|
||||
"""Recursively render every string in a JSON-like value structure."""
|
||||
if isinstance(value, str):
|
||||
return render_template(value, context)
|
||||
if isinstance(value, dict):
|
||||
return {k: render_value(v, context) for k, v in value.items()}
|
||||
if isinstance(value, list):
|
||||
return [render_value(v, context) for v in value]
|
||||
return value
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue