##// END OF EJS Templates
add html_text and add_anchor filters...
MinRK -
Show More
@@ -57,6 +57,8 b' default_filters = {'
57 57 'rm_ansi': filters.remove_ansi,
58 58 'rm_dollars': filters.strip_dollars,
59 59 'rm_fake': filters.rm_fake,
60 'html_text' : filters.html_text,
61 'add_anchor': filters.add_anchor,
60 62 'ansi2latex': filters.ansi2latex,
61 63 'rm_math_space': filters.rm_math_space,
62 64 'wrap': filters.wrap
@@ -1,3 +1,4 b''
1 # coding: utf-8
1 2 """String filters.
2 3
3 4 Contains a collection of useful string manipulation filters for use in Jinja
@@ -17,6 +18,9 b' templates.'
17 18
18 19 import re
19 20 import textwrap
21 from xml.etree import ElementTree
22
23 from IPython.utils import py3compat
20 24
21 25 #-----------------------------------------------------------------------------
22 26 # Functions
@@ -24,6 +28,8 b' import textwrap'
24 28
25 29 __all__ = [
26 30 'wrap',
31 'html_text',
32 'add_anchor',
27 33 'strip_dollars',
28 34 'rm_fake',
29 35 'python_comment',
@@ -49,12 +55,34 b' def wrap(text, width=100):'
49 55 wrpd = map('\n'.join, wrp)
50 56 return '\n'.join(wrpd)
51 57
52 def single_line(text):
53 """Wrap multi-line text into a single line
58
59 def html_text(element):
60 """extract inner text from html
61
62 Analog of jQuery's $(element).text()
63 """
64 if not isinstance(element, (ElementTree.ElementTree, ElementTree.Element)):
65 element = ElementTree.fromstring(element)
66
67 text = element.text or ""
68 for child in element:
69 text += html_text(child)
70 text += (element.tail or "")
71 return text
72
73
74 def add_anchor(html):
75 """Add an anchor-link to an html header tag
54 76
55 Used in markdown heading cells, which are not allowed to be multiline.
77 For use in heading cells
56 78 """
57 return ''.join(text.splitlines())
79 h = ElementTree.fromstring(py3compat.cast_bytes_py2(html))
80 link = html_text(h).replace(' ', '-')
81 h.set('id', link)
82 a = ElementTree.Element("a", {"class" : "anchor-link", "href" : "#" + link})
83 a.text = u'¶'
84 h.append(a)
85 return ElementTree.tostring(h)
58 86
59 87
60 88 def strip_dollars(text):
General Comments 0
You need to be logged in to leave comments. Login now