Add clear state
This commit is contained in:
parent
47dd9bf350
commit
c4f6e0a33d
|
|
@ -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():
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user