Mercurial > jouvence
comparison jouvence/renderer.py @ 22:142a53d6e558
Add support for notes.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 04 Jan 2017 23:03:33 -0800 |
parents | ee741bbe96a8 |
children | 2ef526c301cc |
comparison
equal
deleted
inserted
replaced
21:94d094a0bdb7 | 22:142a53d6e558 |
---|---|
92 RE_BOLD = re.compile( | 92 RE_BOLD = re.compile( |
93 r"(?P<before>^|\s)(?P<esc>\\)?\*\*(?P<text>.*[^\s])\*\*(?=[^a-zA-Z0-9]|$)") | 93 r"(?P<before>^|\s)(?P<esc>\\)?\*\*(?P<text>.*[^\s])\*\*(?=[^a-zA-Z0-9]|$)") |
94 RE_UNDERLINE = re.compile( | 94 RE_UNDERLINE = re.compile( |
95 r"(?P<before>^|\s)(?P<esc>\\)?_(?P<text>.*[^\s])_(?=[^a-zA-Z0-9]|$)") | 95 r"(?P<before>^|\s)(?P<esc>\\)?_(?P<text>.*[^\s])_(?=[^a-zA-Z0-9]|$)") |
96 | 96 |
97 RE_NOTE = re.compile(r"\[\[(?P<text>.+?)\]\]", re.DOTALL) | |
98 | |
97 | 99 |
98 class BaseTextRenderer: | 100 class BaseTextRenderer: |
99 def render_text(self, text): | 101 def render_text(self, text): |
100 # Replace bold stuff to catch double asterisks. | 102 # Replace bold stuff to catch double asterisks. |
101 text = RE_BOLD.sub(self._do_make_bold, text) | 103 text = RE_BOLD.sub(self._do_make_bold, text) |
102 text = RE_ITALICS.sub(self._do_make_italics, text) | 104 text = RE_ITALICS.sub(self._do_make_italics, text) |
103 text = RE_UNDERLINE.sub(self._do_make_underline, text) | 105 text = RE_UNDERLINE.sub(self._do_make_underline, text) |
106 text = RE_NOTE.sub(self._do_make_note, text) | |
104 | 107 |
105 return text | 108 return text |
106 | 109 |
107 def _do_make_italics(self, m): | 110 def _do_make_italics(self, m): |
108 if m.group('esc'): | 111 if m.group('esc'): |
123 return m.group('before') + '_' + m.group('text') + '_' | 126 return m.group('before') + '_' + m.group('text') + '_' |
124 return ( | 127 return ( |
125 m.group('before') + | 128 m.group('before') + |
126 self.make_underline(m.group('text'))) | 129 self.make_underline(m.group('text'))) |
127 | 130 |
131 def _do_make_note(self, m): | |
132 return self.make_note(m.group('text')) | |
133 | |
128 def make_italics(self, text): | 134 def make_italics(self, text): |
129 raise NotImplementedError() | 135 raise NotImplementedError() |
130 | 136 |
131 def make_bold(self, text): | 137 def make_bold(self, text): |
132 raise NotImplementedError() | 138 raise NotImplementedError() |
133 | 139 |
134 def make_underline(self, text): | 140 def make_underline(self, text): |
141 raise NotImplementedError() | |
142 | |
143 def make_note(self, text): | |
135 raise NotImplementedError() | 144 raise NotImplementedError() |
136 | 145 |
137 | 146 |
138 class NullTextRenderer(BaseTextRenderer): | 147 class NullTextRenderer(BaseTextRenderer): |
139 def make_bold(self, text): | 148 def make_bold(self, text): |
142 def make_italics(self, text): | 151 def make_italics(self, text): |
143 return text | 152 return text |
144 | 153 |
145 def make_underline(self, text): | 154 def make_underline(self, text): |
146 return text | 155 return text |
156 | |
157 def make_note(self, text): | |
158 return text |