aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--markdown/extensions/smarty.py16
-rw-r--r--markdown/treeprocessors.py5
-rw-r--r--tests/extensions/test.cfg2
3 files changed, 15 insertions, 8 deletions
diff --git a/markdown/extensions/smarty.py b/markdown/extensions/smarty.py
index 2f946f8..6f15d2c 100644
--- a/markdown/extensions/smarty.py
+++ b/markdown/extensions/smarty.py
@@ -68,6 +68,8 @@
from __future__ import unicode_literals
from . import Extension
from ..inlinepatterns import HtmlPattern
+from ..odict import OrderedDict
+from ..treeprocessors import InlineProcessor
from ..util import parseBoolValue
# Constants for quote education.
@@ -145,20 +147,20 @@ class SmartyExtension(Extension):
for ind, pattern in enumerate(patterns):
pattern += (md,)
pattern = SubstituteTextPattern(*pattern)
- after = ('>smarty-%s-%d' % (serie, ind - 1) if ind else '>entity')
+ after = ('>smarty-%s-%d' % (serie, ind - 1) if ind else '_begin')
name = 'smarty-%s-%d' % (serie, ind)
- md.inlinePatterns.add(name, pattern, after)
+ self.inlinePatterns.add(name, pattern, after)
def educateDashes(self, md):
emDashesPattern = SubstituteTextPattern(r'(?<!-)---(?!-)', ('&mdash;',), md)
enDashesPattern = SubstituteTextPattern(r'(?<!-)--(?!-)', ('&ndash;',), md)
- md.inlinePatterns.add('smarty-em-dashes', emDashesPattern, '>entity')
- md.inlinePatterns.add('smarty-en-dashes', enDashesPattern,
+ 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}(?!\.)', ('&hellip;',), md)
- md.inlinePatterns.add('smarty-ellipses', ellipsesPattern, '>entity')
+ self.inlinePatterns.add('smarty-ellipses', ellipsesPattern, '_begin')
def educateQuotes(self, md):
patterns = (
@@ -179,12 +181,16 @@ class SmartyExtension(Extension):
def extendMarkdown(self, md, md_globals):
configs = self.getConfigs()
+ self.inlinePatterns = OrderedDict()
if configs['smart_quotes']:
self.educateQuotes(md)
if configs['smart_dashes']:
self.educateDashes(md)
if configs['smart_ellipses']:
self.educateEllipses(md)
+ inlineProcessor = InlineProcessor(md)
+ inlineProcessor.inlinePatterns = self.inlinePatterns
+ md.treeprocessors.add('smarty', inlineProcessor, '_end')
md.ESCAPED_CHARS.extend(['"', "'"])
def makeExtension(configs=None):
diff --git a/markdown/treeprocessors.py b/markdown/treeprocessors.py
index ef0a2aa..32b73b1 100644
--- a/markdown/treeprocessors.py
+++ b/markdown/treeprocessors.py
@@ -53,6 +53,7 @@ class InlineProcessor(Treeprocessor):
+ len(self.__placeholder_suffix)
self.__placeholder_re = util.INLINE_PLACEHOLDER_RE
self.markdown = md
+ self.inlinePatterns = md.inlinePatterns
def __makePlaceholder(self, type):
""" Generate a placeholder """
@@ -99,9 +100,9 @@ class InlineProcessor(Treeprocessor):
"""
if not isinstance(data, util.AtomicString):
startIndex = 0
- while patternIndex < len(self.markdown.inlinePatterns):
+ while patternIndex < len(self.inlinePatterns):
data, matched, startIndex = self.__applyPattern(
- self.markdown.inlinePatterns.value_for_index(patternIndex),
+ self.inlinePatterns.value_for_index(patternIndex),
data, patternIndex, startIndex)
if not matched:
patternIndex += 1
diff --git a/tests/extensions/test.cfg b/tests/extensions/test.cfg
index 494d79b..8b0d748 100644
--- a/tests/extensions/test.cfg
+++ b/tests/extensions/test.cfg
@@ -1,5 +1,5 @@
[attr_list]
-extensions=attr_list,def_list
+extensions=attr_list,def_list,smarty
[codehilite]
extensions=codehilite