From f3ff920e384dd3497e75447e422bf31123dc659c Mon Sep 17 00:00:00 2001 From: m Date: Thu, 26 Mar 2026 16:09:38 +0100 Subject: [PATCH] render --- flask_logic/renderer.py | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/flask_logic/renderer.py b/flask_logic/renderer.py index 190a082..92d51f3 100644 --- a/flask_logic/renderer.py +++ b/flask_logic/renderer.py @@ -92,4 +92,37 @@ def collect_css(context): if css: css_files.append(css) - return css_files \ No newline at end of file + return css_files + +def generate_preview(content, max_length=200): + if isinstance(content, str): + # old system + text = re.sub(r"<[^>]+>", "", content) # strip HTML + return text[:max_length] + + elif isinstance(content, list): + # new system + for block in content: + if block.get("type") == "text": + text = re.sub(r"<[^>]+>", "", block.get("value", "")) + return text[:max_length] + + return "" + +# optinal, for images +def generate_preview_html(content, context=None): + if isinstance(content, list): + for block in content: + if block.get("type") == "text": + return f"
{block.get('value')}
" + + elif block.get("type") in COMPONENTS: + # optional: allow image preview + render_func = COMPONENTS[block["type"]]["render"] + kwargs = {k: v for k, v in block.items() if k != "type"} + return render_func(**kwargs, context=context) + + elif isinstance(content, str): + return content[:200] + + return "" \ No newline at end of file