Source code for ipypublish.filters_pandoc
"""
pandoc filters for the ipypublish format
"""
# import sys
from six import string_types
import panflute as pf
pf.elements.RAW_FORMATS.add("latex")
pf.elements.RAW_FORMATS.add("tex")
pf.elements.RAW_FORMATS.add("rst")
pf.elements.RAW_FORMATS.add("html5")
# see https://github.com/sergiocorreia/panflute/issues/97
# TODO delete this when fixed
# if sys.version_info[0] == 2 or True:
[docs]def builtin2meta(val):
if isinstance(val, bool):
return pf.MetaBool(val)
elif isinstance(val, (float, int)):
return pf.MetaString(str(val))
elif isinstance(val, string_types):
return pf.MetaString(val)
elif isinstance(val, list):
return pf.MetaList(*[builtin2meta(x) for x in val])
elif isinstance(val, dict):
return pf.MetaMap(*[(k, builtin2meta(v)) for k, v in val.items()])
elif isinstance(val, pf.Block):
return pf.MetaBlocks(val)
elif isinstance(val, pf.Inline):
return pf.MetaInlines(val)
elif isinstance(
val,
(
pf.MetaBool,
pf.MetaString,
pf.MetaValue,
pf.MetaList,
pf.MetaMap,
pf.MetaBlocks,
pf.MetaInlines,
),
):
return val
raise TypeError("unknown type: {} (type: {})".format(val, type(val)))
pf.elements.builtin2meta = builtin2meta