Source

mdx_smartypants / mdx_smartypants.py

Full commit
Jonathan Eunice 01f9a36 



Jonathan Eunice 25fe726 

Jonathan Eunice 251fb53 

Jonathan Eunice ff6c7e5 
Jonathan Eunice 25fe726 









Jonathan Eunice ff6c7e5 



Jonathan Eunice 25fe726 
Jonathan Eunice ff6c7e5 



Jonathan Eunice 01f9a36 
Jonathan Eunice 3b2ef3a 
"""An extension to Python Markdown that uses smartypants to provide
typographically nicer ("curly") quotes, proper ("em" and "en") dashes, etc.
"""

from markdown.postprocessors import Postprocessor
from markdown.extensions import Extension
from smartypants import smartyPants
from namedentities import named_entities


# Monkeypatch the base smartypants module to add the style tag to the list
# of tags not delved into. This fix has been suggested to the smartypants
# author and package maintainer. But until they update it, there's monkey
# patching.
import smartypants, re

smartypants.tags_to_skip_regex = re.compile(r"<(/)?(pre|code|kbd|script|style|math)[^>]*>", re.I)

class SmartypantsPost(Postprocessor):
    
    def run(self, text):
        return named_entities(smartyPants(text))

class SmartypantsExt(Extension):
    
    def extendMarkdown(self, md, md_globals):
        md.postprocessors.add('smartypants', SmartypantsPost(md), '_end')

def makeExtension(configs=None):
    return SmartypantsExt(configs=configs)