diff options
author | Martin Altmayer <altmayer@posteo.de> | 2014-08-11 19:45:09 +0200 |
---|---|---|
committer | Martin Altmayer <altmayer@posteo.de> | 2014-08-11 19:45:09 +0200 |
commit | af85029ca443609b803ebc83e806c1ee115db900 (patch) | |
tree | 5e6a683b4d7e85daed8ac298ff9c5e57eda5a126 /markdown/extensions | |
parent | 139e882437e7f3c7295973d0866afea24bbe926b (diff) | |
download | markdown-af85029ca443609b803ebc83e806c1ee115db900.tar.gz markdown-af85029ca443609b803ebc83e806c1ee115db900.tar.bz2 markdown-af85029ca443609b803ebc83e806c1ee115db900.zip |
Replaced smart_lsquo etc. by a single option smart_substitutions which allows to overwrite all substitution strings. Fixed line length in docs.
Diffstat (limited to 'markdown/extensions')
-rw-r--r-- | markdown/extensions/smarty.py | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/markdown/extensions/smarty.py b/markdown/extensions/smarty.py index 16d2936..cc6b694 100644 --- a/markdown/extensions/smarty.py +++ b/markdown/extensions/smarty.py @@ -85,7 +85,20 @@ openingQuotesBase = ( '|&[mn]dash;' # or named dash entities '|–|—' # or decimal entities ')' -) +) + +substitutions = { + 'mdash': '—', + 'ndash': '–', + 'ellipsis': '…', + 'left-angle-quote': '«', + 'right-angle-quote': '»', + 'left-single-quote': '‘', + 'right-single-quote': '’', + 'left-double-quote': '“', + 'right-double-quote': '”', +} + # Special case if the very first character is a quote # followed by punctuation at a non-word-break. Close the quotes by brute force: @@ -138,12 +151,12 @@ class SmartyExtension(Extension): 'smart_angled_quotes': [False, 'Educate angled quotes'], 'smart_dashes': [True, 'Educate dashes'], 'smart_ellipses': [True, 'Educate ellipses'], - 'smart_lsquo' : ['‘', 'Replacement text for single left quote'], - 'smart_rsquo' : ['’', 'Replacement text for single right quote'], - 'smart_ldquo' : ['“', 'Replacement text for double left quote'], - 'smart_rdquo' : ['”', 'Replacement text for double right quote'], + 'smart_substitutions' : [{}, 'Overwrite default substitutions'], } super(SmartyExtension, self).__init__(*args, **kwargs) + self.substitutions = dict(substitutions) + self.substitutions.update(self.getConfig('smart_substitutions', + default={})) def _addPatterns(self, md, patterns, serie): for ind, pattern in enumerate(patterns): @@ -154,19 +167,24 @@ class SmartyExtension(Extension): self.inlinePatterns.add(name, pattern, after) def educateDashes(self, md): - emDashesPattern = SubstituteTextPattern(r'(?<!-)---(?!-)', ('—',), md) - enDashesPattern = SubstituteTextPattern(r'(?<!-)--(?!-)', ('–',), md) + emDashesPattern = SubstituteTextPattern(r'(?<!-)---(?!-)', + (self.substitutions['mdash'],), md) + enDashesPattern = SubstituteTextPattern(r'(?<!-)--(?!-)', + (self.substitutions['ndash'],), md) self.inlinePatterns.add('smarty-em-dashes', emDashesPattern, '_begin') self.inlinePatterns.add('smarty-en-dashes', enDashesPattern, '>smarty-em-dashes') def educateEllipses(self, md): - ellipsesPattern = SubstituteTextPattern(r'(?<!\.)\.{3}(?!\.)', ('…',), md) + ellipsesPattern = SubstituteTextPattern(r'(?<!\.)\.{3}(?!\.)', + (self.substitutions['ellipsis'],), md) self.inlinePatterns.add('smarty-ellipses', ellipsesPattern, '_begin') def educateAngledQuotes(self, md): - leftAngledQuotePattern = SubstituteTextPattern(r'\<\<', ('«',), md) - rightAngledQuotePattern = SubstituteTextPattern(r'\>\>', ('»',), md) + leftAngledQuotePattern = SubstituteTextPattern(r'\<\<', + (self.substitutions['left-angle-quote'],), md) + rightAngledQuotePattern = SubstituteTextPattern(r'\>\>', + (self.substitutions['right-angle-quote'],), md) self.inlinePatterns.add('smarty-left-angle-quotes', leftAngledQuotePattern, '_begin') self.inlinePatterns.add('smarty-right-angle-quotes', @@ -174,10 +192,10 @@ class SmartyExtension(Extension): def educateQuotes(self, md): configs = self.getConfigs() - lsquo = configs['smart_lsquo'] - rsquo = configs['smart_rsquo'] - ldquo = configs['smart_ldquo'] - rdquo = configs['smart_rdquo'] + lsquo = self.substitutions['left-single-quote'] + rsquo = self.substitutions['right-single-quote'] + ldquo = self.substitutions['left-double-quote'] + rdquo = self.substitutions['right-double-quote'] patterns = ( (singleQuoteStartRe, (rsquo,)), (doubleQuoteStartRe, (rdquo,)), |