From c4f6e0a33d49ec9d64a89c385d986bb0353e479c Mon Sep 17 00:00:00 2001 From: Folkert Kevelam Date: Sun, 24 Aug 2025 17:58:57 +0200 Subject: [PATCH] Add clear state --- Server/MarkdownPreviewer/render_pipeline.py | 29 ++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/Server/MarkdownPreviewer/render_pipeline.py b/Server/MarkdownPreviewer/render_pipeline.py index a3d616b..64eb545 100644 --- a/Server/MarkdownPreviewer/render_pipeline.py +++ b/Server/MarkdownPreviewer/render_pipeline.py @@ -2,7 +2,14 @@ # Allows filtering and mapping based on blocks and meta keys. # -import pandoc +from .pandoc import Pandoc + +class CallbackClass: + def __init__(self): + pass + + def clear(self): + pass class MetaCallback: def __init__(self, key, callback, replace=False): @@ -13,7 +20,10 @@ class MetaCallback: def __call__(self, data): return self.callback(data) -class MultiCallback: + def clear(self): + pass + +class MultiCallback(CallbackClass): def __init__(self, filter): self.filter = filter self.callbacks = dict() @@ -32,10 +42,15 @@ class MultiCallback: else: return block + def clear(self): + for key,value in self.callbacks.items(): + if isinstance(value, CallbackClass): + value.clear() + class RenderPipeline: def __init__(self): - self.pandoc = pandoc.Pandoc() + self.pandoc = Pandoc() self.metacallbacks = dict() self.callbacks = dict() @@ -45,6 +60,13 @@ class RenderPipeline: def AddCallback(self, key, callback, replace=False): self.callbacks[key] = {'cb' : callback, 'replace' : replace} + def ClearState(self): + for key,value in self.metacallbacks.items(): + value.clear() + for key,value in self.callbacks.items(): + if isinstance(value['cb'], CallbackClass): + value['cb'].clear() + def ParseBlock(self, block): if 'c' not in block: @@ -76,6 +98,7 @@ class RenderPipeline: return output_list def __call__(self, data): + self.ClearState() json_data = self.pandoc.ConvertToJson(data) for meta_key, meta_value in json_data['meta'].items():