##// END OF EJS Templates
A new implementation of reveal converter with jinja templates.
A new implementation of reveal converter with jinja templates.

File last commit:

r9491:ba7dbabb
r9509:fd4dd963
Show More
jinja_filters.py
88 lines | 2.7 KiB | text/x-python | PythonLexer
Matthias BUSSONNIER
mofe filter in separate file
r9303 #-----------------------------------------------------------------------------
# Copyright (c) 2012, the IPython Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
from __future__ import absolute_import
# Stdlib imports
import re
from IPython.utils.text import indent
from markdown import markdown
from .utils import remove_ansi
from .utils import highlight, ansi2html
from .utils import markdown2latex
Matthias BUSSONNIER
allow configurable filters
r9424
from IPython.config.configurable import Configurable
Matthias BUSSONNIER
pylint
r9491 from IPython.utils.traitlets import List
Matthias BUSSONNIER
allow configurable filters
r9424
Matthias BUSSONNIER
mofe filter in separate file
r9303 #-----------------------------------------------------------------------------
# Class declarations
#-----------------------------------------------------------------------------
Matthias BUSSONNIER
allow configurable filters
r9424
class GlobalConfigurable(Configurable):
"""Global configurable class for shared config
Usefull for display data priority that might be use by many trasnformers
"""
display_data_priority = List(['html', 'pdf', 'svg', 'latex', 'png', 'jpg', 'jpeg' , 'text'],
config=True,
help= """
An ordered list of prefered output type, the first
encounterd will usually be used when converting discarding
the others.
"""
)
def __init__(self, config=None, **kw):
super(GlobalConfigurable, self).__init__( config=config, **kw)
class ConfigurableFilter(GlobalConfigurable):
"""Configurable Jinja Filter"""
def __init__(self, config=None, **kw):
super(ConfigurableFilter, self).__init__(config=config, **kw)
def __call__(self, *args, **kwargs):
raise NotImplementedError('should be implemented by subclass')
class FilterDataType(ConfigurableFilter):
""" return the preferd displayed format
"""
def __call__(self, output):
""" return the first availlable format in priority """
for fmt in self.display_data_priority:
if fmt in output:
return [fmt]
raise Exception("did not found any format I can extract in output, shoudl at lest have one")
Matthias BUSSONNIER
mofe filter in separate file
r9303 def rm_fake(strng):
return strng.replace('/files/', '')
def python_comment(string):
return '# '+'\n# '.join(string.split('\n'))
LATEX_SUBS = (
(re.compile(r'\\'), r'\\textbackslash'),
(re.compile(r'([{}_#%&$])'), r'\\\1'),
(re.compile(r'~'), r'\~{}'),
(re.compile(r'\^'), r'\^{}'),
(re.compile(r'"'), r"''"),
(re.compile(r'\.\.\.+'), r'\\ldots'),
)
def escape_tex(value):
newval = value
for pattern, replacement in LATEX_SUBS:
newval = pattern.sub(replacement, newval)
return newval