def html_to_markmin(html): """Replace HTML with Markmin""" if html is None: return '' from gluon.html import markmin_serializer, TAG return TAG(html).flatten(markmin_serializer).lstrip(' ')
def test_markdown(self): def markdown(text, tag=None, attributes={}): r = {None: re.sub('\s+',' ',text), \ 'h1':'#'+text+'\\n\\n', \ 'p':text+'\\n'}.get(tag,text) return r a=TAG('<h1>Header</h1><p>this is a test</p>') ret = a.flatten(markdown) self.assertEqual(ret, '#Header\\n\\nthis is a test\\n')
def pdflatex_from_html(html): if os.system('which pdflatex > /dev/null') == 0: markmin = TAG(html).element('body').flatten(markmin_serializer) out, warnings, errors = markmin2pdf(markmin) if errors: current.response.headers['Content-Type'] = 'text/html' raise HTTP(405, HTML(BODY(H1('errors'), UL(*errors), H1('warnings'), UL(*warnings))).xml()) else: return XML(out)
def html_to_markmin(html): """ Replace HTML with Markmin, converting unicode to references first >>> html_to_markmin('<p class="foo"><b>Bold</b><i>Italics</i><ol><li>Item 1</li><li><a href="http://kvasir.io">Kvasir</a></li></ol><br>') "**Bold**''Italics''\n- Item 1\n- [[Kvasir http://kvasir.io]]\n\n\n\n" >>> html_to_markmin(u'<p>asdfsadf</p>') 'asdfsadf\n\n' >>> html_to_markmin(u'<p>\ufffdq\ufffd</p>') '\xef\xbf\xbdq\xef\xbf\xbd\n\n' >>> html_to_markmin('[[ a link http://url.com]]') '[[a link http://url.com]]' """ if html is None: return '' from gluon.html import markmin_serializer, TAG html = html.encode('ascii', 'xmlcharrefreplace') # cleanup unicode html = TAG(html).flatten(markmin_serializer) # turn to markmin html = html.replace('[[ ', '[[') # fix bad url html = html.replace(' ]]', ']]') # fix bad url return html
def latex_from_html(html): markmin = TAG(html).element('body').flatten(markmin_serializer) return XML(markmin2latex(markmin))