def test_smartypants(self, html): text = "Don't call me Shirley" expected_result = "<p>Don’t call me Shirley</p>\n" md = Misaka(smartypants=True) result = md.render(text) self.assertIsInstance(result, Markup) self.assertEqual(result, expected_result)
def test_override_defaults(self, html): ext, flags = 0, 0 md = Misaka(autolink=True) result = md.render(TEST_MD, autolink=False) html.assert_called_with(TEST_MD, extensions=ext, render_flags=flags) self.assertIsInstance(result, Markup) self.assertEqual(result, misaka.html(TEST_MD, extensions=ext, render_flags=flags))
def test_set_defaults(self, html): ext, flags = EXT_TABLES, HTML_HARD_WRAP md = Misaka(hard_wrap=True, tables=True) result = md.render(TEST_MD) html.assert_called_with(TEST_MD, extensions=ext, render_flags=flags) self.assertIsInstance(result, Markup) self.assertEqual(result, misaka.html(TEST_MD, extensions=ext, render_flags=flags))
def test_override_defaults(self, html): ext, flags = 0, 0 md = Misaka(autolink=True) result = md.render(TEST_MD, autolink=False) html.assert_called_with(TEST_MD, extensions=ext, render_flags=flags) self.assertIsInstance(result, Markup) self.assertEqual( result, misaka.html(TEST_MD, extensions=ext, render_flags=flags))
def test_set_defaults(self, html): ext, flags = EXT_TABLES, HTML_HARD_WRAP md = Misaka(hard_wrap=True, tables=True) result = md.render(TEST_MD) html.assert_called_with(TEST_MD, extensions=ext, render_flags=flags) self.assertIsInstance(result, Markup) self.assertEqual( result, misaka.html(TEST_MD, extensions=ext, render_flags=flags))
def test_smartypants(self, html): text = "Don't call me Shirley" pantsed = "Don’t call me Shirley" expected_result = "<p>Don’t call me Shirley</p>\n" md = Misaka(smartypants=True) result = md.render(text) html.assert_called_with(pantsed, extensions=0, render_flags=0) self.assertIsInstance(result, Markup) self.assertEqual(result, expected_result)
def test_custom_renderer(self, html): class CustomRenderer(misaka.HtmlRenderer): def image(self, link, title, alt_text): return '<div><img src="{0}" alt="{2}" title="{1}"><div>{1}</div></div>'.format( link, title, alt_text) test_md = '![Alt text](/img.jpg "Title")' expected_result = '<p><div><img src="/img.jpg" alt="Alt text" title="Title"><div>Title</div></div></p>\n' md = Misaka(None, CustomRenderer()) result = md.render(test_md) self.assertFalse(html.called) self.assertEqual(str(result), expected_result)
def test_smartypants_table(self, html): "smartypants should not interfere with processing tables" text = dedent(""" | Left align | Right align | Center align | |:-----------|------------:|:------------:| | This | This | This | | column | column | column | | will | will | will | | be | be | be | | left | right | center | | aligned | aligned | aligned | """) expected_result = dedent(""" <table> <thead> <tr> <th style="text-align: left">Left align</th> <th style="text-align: right">Right align</th> <th style="text-align: center">Center align</th> </tr> </thead> <tbody> <tr> <td style="text-align: left">This</td> <td style="text-align: right">This</td> <td style="text-align: center">This</td> </tr> <tr> <td style="text-align: left">column</td> <td style="text-align: right">column</td> <td style="text-align: center">column</td> </tr> <tr> <td style="text-align: left">will</td> <td style="text-align: right">will</td> <td style="text-align: center">will</td> </tr> <tr> <td style="text-align: left">be</td> <td style="text-align: right">be</td> <td style="text-align: center">be</td> </tr> <tr> <td style="text-align: left">left</td> <td style="text-align: right">right</td> <td style="text-align: center">center</td> </tr> <tr> <td style="text-align: left">aligned</td> <td style="text-align: right">aligned</td> <td style="text-align: center">aligned</td> </tr> </tbody> </table> """) md = Misaka(tables=True, smartypants=True) result = md.render(text).strip() self.assertIsInstance(result, Markup) self.assertEqual(result.strip(), expected_result.strip())
from flask.ext.bootstrap import Bootstrap from flask.ext.sqlalchemy import SQLAlchemy import os from flask.ext.login import LoginManager from flask.ext.openid import OpenID from flask.ext.admin import Admin from config import basedir, ADMINS, MAIL_SERVER, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD from flask_misaka import Misaka from app.renderers import QuilltRenderer app = Flask(__name__) app.config.from_object('config') Bootstrap(app) db = SQLAlchemy(app) m = Misaka(app, QuilltRenderer()) print(m.render("This is a test (r) [[test]]")) #lm = LoginManager() #lm.init_app(app) #lm.login_view = 'login' #oid = OpenID(app, os.path.join(basedir, 'tmp')) if not app.debug: import logging from logging.handlers import SMTPHandler credentials = None if MAIL_USERNAME or MAIL_PASSWORD: credentials = (MAIL_USERNAME, MAIL_PASSWORD) mail_handler = SMTPHandler((MAIL_SERVER, MAIL_PORT), 'no-reply@' + MAIL_SERVER, ADMINS,