Show More
@@ -40,8 +40,7 b' from docutils.writers import html4css1' | |||||
40 | import markdown |
|
40 | import markdown | |
41 |
|
41 | |||
42 | from rhodecode.lib.markdown_ext import GithubFlavoredMarkdownExtension |
|
42 | from rhodecode.lib.markdown_ext import GithubFlavoredMarkdownExtension | |
43 | from rhodecode.lib.utils2 import ( |
|
43 | from rhodecode.lib.utils2 import (safe_unicode, md5_safe, MENTIONS_REGEX) | |
44 | safe_str, safe_unicode, md5_safe, MENTIONS_REGEX) |
|
|||
45 |
|
44 | |||
46 | log = logging.getLogger(__name__) |
|
45 | log = logging.getLogger(__name__) | |
47 |
|
46 | |||
@@ -172,6 +171,32 b' def relative_path(path, request_path, is' | |||||
172 | return u'/' + final_path |
|
171 | return u'/' + final_path | |
173 |
|
172 | |||
174 |
|
173 | |||
|
174 | _cached_markdown_renderer = None | |||
|
175 | ||||
|
176 | ||||
|
177 | def get_markdown_renderer(extensions, output_format): | |||
|
178 | global _cached_markdown_renderer | |||
|
179 | ||||
|
180 | if _cached_markdown_renderer is None: | |||
|
181 | _cached_markdown_renderer = markdown.Markdown( | |||
|
182 | extensions=extensions, | |||
|
183 | enable_attributes=False, output_format=output_format) | |||
|
184 | return _cached_markdown_renderer | |||
|
185 | ||||
|
186 | ||||
|
187 | _cached_markdown_renderer_flavored = None | |||
|
188 | ||||
|
189 | ||||
|
190 | def get_markdown_renderer_flavored(extensions, output_format): | |||
|
191 | global _cached_markdown_renderer_flavored | |||
|
192 | ||||
|
193 | if _cached_markdown_renderer_flavored is None: | |||
|
194 | _cached_markdown_renderer_flavored = markdown.Markdown( | |||
|
195 | extensions=extensions + [GithubFlavoredMarkdownExtension()], | |||
|
196 | enable_attributes=False, output_format=output_format) | |||
|
197 | return _cached_markdown_renderer_flavored | |||
|
198 | ||||
|
199 | ||||
175 | class MarkupRenderer(object): |
|
200 | class MarkupRenderer(object): | |
176 | RESTRUCTUREDTEXT_DISALLOWED_DIRECTIVES = ['include', 'meta', 'raw'] |
|
201 | RESTRUCTUREDTEXT_DISALLOWED_DIRECTIVES = ['include', 'meta', 'raw'] | |
177 |
|
202 | |||
@@ -183,14 +208,10 b' class MarkupRenderer(object):' | |||||
183 | URL_PAT = re.compile(r'(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]' |
|
208 | URL_PAT = re.compile(r'(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]' | |
184 | r'|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)') |
|
209 | r'|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)') | |
185 |
|
210 | |||
186 | extensions = ['codehilite', 'extra', 'def_list', 'sane_lists'] |
|
211 | extensions = ['markdown.extensions.codehilite', 'markdown.extensions.extra', | |
|
212 | 'markdown.extensions.def_list', 'markdown.extensions.sane_lists'] | |||
|
213 | ||||
187 | output_format = 'html4' |
|
214 | output_format = 'html4' | |
188 | markdown_renderer = markdown.Markdown( |
|
|||
189 | extensions, enable_attributes=False, output_format=output_format) |
|
|||
190 |
|
||||
191 | markdown_renderer_flavored = markdown.Markdown( |
|
|||
192 | extensions + [GithubFlavoredMarkdownExtension()], |
|
|||
193 | enable_attributes=False, output_format=output_format) |
|
|||
194 |
|
215 | |||
195 | # extension together with weights. Lower is first means we control how |
|
216 | # extension together with weights. Lower is first means we control how | |
196 | # extensions are attached to readme names with those. |
|
217 | # extensions are attached to readme names with those. | |
@@ -346,9 +367,11 b' class MarkupRenderer(object):' | |||||
346 | """ |
|
367 | """ | |
347 |
|
368 | |||
348 | if flavored: |
|
369 | if flavored: | |
349 |
markdown_renderer = |
|
370 | markdown_renderer = get_markdown_renderer_flavored( | |
|
371 | cls.extensions, cls.output_format) | |||
350 | else: |
|
372 | else: | |
351 |
markdown_renderer = |
|
373 | markdown_renderer = get_markdown_renderer( | |
|
374 | cls.extensions, cls.output_format) | |||
352 |
|
375 | |||
353 | if mentions: |
|
376 | if mentions: | |
354 | mention_pat = re.compile(MENTIONS_REGEX) |
|
377 | mention_pat = re.compile(MENTIONS_REGEX) | |
@@ -452,7 +475,7 b' class MarkupRenderer(object):' | |||||
452 |
|
475 | |||
453 | return nb, resources |
|
476 | return nb, resources | |
454 |
|
477 | |||
455 | def _sanitize_resources(resources): |
|
478 | def _sanitize_resources(input_resources): | |
456 | """ |
|
479 | """ | |
457 | Skip/sanitize some of the CSS generated and included in jupyter |
|
480 | Skip/sanitize some of the CSS generated and included in jupyter | |
458 | so it doesn't messes up UI so much |
|
481 | so it doesn't messes up UI so much | |
@@ -464,8 +487,8 b' class MarkupRenderer(object):' | |||||
464 | # _default_template_path_default, to achieve that |
|
487 | # _default_template_path_default, to achieve that | |
465 |
|
488 | |||
466 | # strip the reset CSS |
|
489 | # strip the reset CSS | |
467 | resources[0] = resources[0][resources[0].find('/*! Source'):] |
|
490 | input_resources[0] = input_resources[0][input_resources[0].find('/*! Source'):] | |
468 | return resources |
|
491 | return input_resources | |
469 |
|
492 | |||
470 | def as_html(notebook): |
|
493 | def as_html(notebook): | |
471 | conf = Config() |
|
494 | conf = Config() |
General Comments 0
You need to be logged in to leave comments.
Login now