Add clear state

This commit is contained in:
Folkert Kevelam 2025-08-24 17:58:57 +02:00
parent 47dd9bf350
commit c4f6e0a33d

View File

@ -2,7 +2,14 @@
# Allows filtering and mapping based on blocks and meta keys. # 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: class MetaCallback:
def __init__(self, key, callback, replace=False): def __init__(self, key, callback, replace=False):
@ -13,7 +20,10 @@ class MetaCallback:
def __call__(self, data): def __call__(self, data):
return self.callback(data) return self.callback(data)
class MultiCallback: def clear(self):
pass
class MultiCallback(CallbackClass):
def __init__(self, filter): def __init__(self, filter):
self.filter = filter self.filter = filter
self.callbacks = dict() self.callbacks = dict()
@ -32,10 +42,15 @@ class MultiCallback:
else: else:
return block return block
def clear(self):
for key,value in self.callbacks.items():
if isinstance(value, CallbackClass):
value.clear()
class RenderPipeline: class RenderPipeline:
def __init__(self): def __init__(self):
self.pandoc = pandoc.Pandoc() self.pandoc = Pandoc()
self.metacallbacks = dict() self.metacallbacks = dict()
self.callbacks = dict() self.callbacks = dict()
@ -45,6 +60,13 @@ class RenderPipeline:
def AddCallback(self, key, callback, replace=False): def AddCallback(self, key, callback, replace=False):
self.callbacks[key] = {'cb' : callback, 'replace' : replace} 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): def ParseBlock(self, block):
if 'c' not in block: if 'c' not in block:
@ -76,6 +98,7 @@ class RenderPipeline:
return output_list return output_list
def __call__(self, data): def __call__(self, data):
self.ClearState()
json_data = self.pandoc.ConvertToJson(data) json_data = self.pandoc.ConvertToJson(data)
for meta_key, meta_value in json_data['meta'].items(): for meta_key, meta_value in json_data['meta'].items():