def test_render_any_markup_formatting(): assert_equals(h.render_any_markup('README.md', '### foo\n' ' <script>alert(1)</script> bar'), '<div class="markdown_content"><h3 id="foo">foo</h3>\n' '<div class="codehilite"><pre><span class="nt">' '<script></span>alert(1)<span class="nt">' '</script></span> bar\n</pre></div>\n\n</div>')
def convert_markup(self, text, filename): """Convert any supported github markup into Allura-markdown. Conversion happens in 4 phases: 1. Convert source text to a html using h.render_any_markup. 2. Rewrite links that match the wiki URL prefix with new location. 3. Convert resulting html to a markdown using html2text, if available. 4. Convert gollum tags If html2text module isn't available then only phases 1 and 2 will be executed. Files in mediawiki format are converted using mediawiki2markdown if html2text is available. """ name, ext = os.path.splitext(filename) if ext in self.markdown_exts: return text try: import html2text html2text.BODY_WIDTH = 0 except ImportError: html2text = None if ext and ext in self.mediawiki_exts: if html2text: text = mediawiki2markdown(text) text = self.convert_gollum_tags(text) # Don't have html here, so we can't call self._rewrite_links. # Falling back to simpler rewriter. prefix = self.github_wiki_url new_prefix = self.app.url if not prefix.endswith('/'): prefix += '/' if not new_prefix.endswith('/'): new_prefix += '/' _re = re.compile(r'%s(\S*)' % prefix) def repl(m): return new_prefix + self._convert_page_name(m.group(1)) text = _re.sub(repl, text) else: text = h.render_any_markup(filename, text) text = self.rewrite_links(text, self.github_wiki_url, self.app.url) return text elif ext and ext in self.textile_exts: text = self._prepare_textile_text(text) text = h.render_any_markup(filename, text) text = self.rewrite_links(text, self.github_wiki_url, self.app.url) if html2text: text = html2text.html2text(text) text = self.convert_gollum_tags(text) text = text.replace('<notextile>', '').replace('</notextile>', '') text = text.replace('<notextile>', '').replace('</notextile>', '') text = text.replace('<notextile>', '').replace('</notextile>', '') return text else: text = h.render_any_markup(filename, text) text = self.rewrite_links(text, self.github_wiki_url, self.app.url) if html2text: text = html2text.html2text(text) text = self.convert_gollum_tags(text) return text
def test_render_any_markup_empty(): assert_equals(h.render_any_markup('foo', ''), '<p><em>Empty File</em></p>')
def test_render_any_markup_plain(): assert_equals( h.render_any_markup( 'readme.txt', '<b>blah</b>\n<script>alert(1)</script>\nfoo'), '<pre><b>blah</b>\n<script>alert(1)</script>\nfoo</pre>')
def test_render_any_markdown_encoding(): # send encoded content in, make sure it converts it to actual unicode object which Markdown lib needs assert_equals(h.render_any_markup('README.md', u'Müller'.encode('utf8')), u'<div class="markdown_content"><p>Müller</p></div>')
def convert_markup(self, text, filename): """Convert any supported github markup into Allura-markdown. Conversion happens in 4 phases: 1. Convert source text to a html using h.render_any_markup. 2. Rewrite links that match the wiki URL prefix with new location. 3. Convert resulting html to a markdown using html2text, if available. 4. Convert gollum tags If html2text module isn't available then only phases 1 and 2 will be executed. Files in mediawiki format are converted using mediawiki2markdown if html2text is available. """ name, ext = os.path.splitext(filename) if ext in self.markdown_exts: text = self.github_markdown_converter.convert(text) return self.convert_gollum_tags(text) try: import html2text html2text.BODY_WIDTH = 0 except ImportError: html2text = None if ext and ext in self.mediawiki_exts: if html2text: text = mediawiki2markdown(text) text = self.convert_gollum_tags(text) # Don't have html here, so we can't call self._rewrite_links. # Falling back to simpler rewriter. prefix = self.github_wiki_url new_prefix = self.app.url if not prefix.endswith('/'): prefix += '/' if not new_prefix.endswith('/'): new_prefix += '/' _re = re.compile(r'%s(\S*)' % prefix) def repl(m): return new_prefix + self._convert_page_name(m.group(1)) text = _re.sub(repl, text) else: text = h.render_any_markup(filename, text) text = self.rewrite_links(text, self.github_wiki_url, self.app.url) return text elif ext and ext in self.textile_exts: text = self._prepare_textile_text(text) text = six.text_type(h.render_any_markup(filename, text)) text = self.rewrite_links(text, self.github_wiki_url, self.app.url) if html2text: text = html2text.html2text(text) text = self.convert_gollum_tags(text) text = text.replace('<notextile>', '').replace('< notextile>', '').replace('</notextile>', '') text = text.replace('<notextile>', '').replace('</notextile>', '') text = text.replace('<notextile>', '').replace('</notextile>', '') return text else: text = h.render_any_markup(filename, text) text = self.rewrite_links(text, self.github_wiki_url, self.app.url) if html2text: text = html2text.html2text(text) text = self.convert_gollum_tags(text) return text
def test_render_any_markup_formatting(): assert_equals(h.render_any_markup('README.md', '### foo\n<script>alert(1)</script> bar'), '<h3>foo</h3>\n<p><script>alert(1)</script> bar</p>')
def test_render_any_markup_empty(): assert_equals(h.render_any_markup("foo", ""), "<p><em>Empty File</em></p>")