Skip to content

Commit 7a8a6b5

Browse files
committed
Switch back to a preprocessor
1 parent b8f70b7 commit 7a8a6b5

File tree

2 files changed

+13
-24
lines changed

2 files changed

+13
-24
lines changed

markdown/blockprocessors.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ def build_block_parser(md, **kwargs):
4646
parser.blockprocessors.register(EmptyBlockProcessor(parser), 'empty', 100)
4747
parser.blockprocessors.register(ListIndentProcessor(parser), 'indent', 90)
4848
parser.blockprocessors.register(CodeBlockProcessor(parser), 'code', 80)
49-
parser.blockprocessors.register(RawHtmlProcessor(parser), 'html', 75)
5049
parser.blockprocessors.register(HashHeaderProcessor(parser), 'hashheader', 70)
5150
parser.blockprocessors.register(SetextHeaderProcessor(parser), 'setextheader', 60)
5251
parser.blockprocessors.register(HRProcessor(parser), 'hr', 50)
@@ -273,29 +272,6 @@ def run(self, parent, blocks):
273272
blocks.insert(0, theRest)
274273

275274

276-
class RawHtmlProcessor(BlockProcessor):
277-
278-
TAG_RE = re.compile(r'(^|\n)[ ]{0,3}<([?!].*?|(?P<tag>[^<> ]+)[^<>]*)>', re.S | re.U)
279-
280-
def test(self, parent, block):
281-
m = self.TAG_RE.search(block)
282-
# If m but no 'tag', then we have a comment, declaration, or processing instruction.
283-
return m and (self.parser.md.is_block_level(m.group('tag')) or not m.group('tag'))
284-
285-
def run(self, parent, blocks):
286-
parser = HTMLExtractor(md=self.parser.md)
287-
while blocks:
288-
parser.feed(blocks.pop(0) + '\n\n')
289-
if not parser.inraw:
290-
break
291-
parser.close()
292-
# Insert Markdown back into blocks with raw HTML extracted.
293-
parts = ''.join(parser.cleandoc).split('\n\n')
294-
parts.reverse()
295-
for block in parts:
296-
blocks.insert(0, block)
297-
298-
299275
class BlockQuoteProcessor(BlockProcessor):
300276

301277
RE = re.compile(r'(^|\n)[ ]{0,3}>[ ]?(.*)')

markdown/preprocessors.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,15 @@
2626
"""
2727

2828
from . import util
29+
from .htmlparser import HTMLExtractor
2930
import re
3031

3132

3233
def build_preprocessors(md, **kwargs):
3334
""" Build the default set of preprocessors used by Markdown. """
3435
preprocessors = util.Registry()
3536
preprocessors.register(NormalizeWhitespace(md), 'normalize_whitespace', 30)
37+
preprocessors.register(HtmlBlockPreprocessor(md), 'html_block', 20)
3638
preprocessors.register(ReferencePreprocessor(md), 'reference', 10)
3739
return preprocessors
3840

@@ -70,6 +72,17 @@ def run(self, lines):
7072
return source.split('\n')
7173

7274

75+
class HtmlBlockPreprocessor(Preprocessor):
76+
"""Remove html blocks from the text and store them for later retrieval."""
77+
78+
def run(self, lines):
79+
source = '\n'.join(lines)
80+
parser = HTMLExtractor(md=self.md)
81+
parser.feed(source)
82+
parser.close()
83+
return ''.join(parser.cleandoc).split('\n')
84+
85+
7386
class ReferencePreprocessor(Preprocessor):
7487
""" Remove reference definitions from text and store for later use. """
7588

0 commit comments

Comments
 (0)