aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--markdown/__init__.py2
-rw-r--r--markdown/__version__.py2
-rw-r--r--markdown/extensions/extra.py32
-rw-r--r--markdown/preprocessors.py6
-rw-r--r--tests/extensions/extra/raw-html.html8
-rw-r--r--tests/extensions/extra/raw-html.txt7
6 files changed, 32 insertions, 25 deletions
diff --git a/markdown/__init__.py b/markdown/__init__.py
index 4943388..378f873 100644
--- a/markdown/__init__.py
+++ b/markdown/__init__.py
@@ -194,7 +194,7 @@ class Markdown(object):
# Try loading the extension first from one place, then another
try: # New style (markdown.extensions.<extension>)
- module = __import__(module_name, {}, {}, [module_name.rpartition('.')[0]])
+ module = __import__(module_name, {}, {}, [str(module_name.rpartition('.')[0])])
except ImportError:
module_name_old_style = '_'.join(['mdx', ext_name])
try: # Old style (mdx_<extension>)
diff --git a/markdown/__version__.py b/markdown/__version__.py
index 9b295e2..2132ce6 100644
--- a/markdown/__version__.py
+++ b/markdown/__version__.py
@@ -5,7 +5,7 @@
# (major, minor, micro, alpha/beta/rc/final, #)
# (1, 1, 2, 'alpha', 0) => "1.1.2.dev"
# (1, 2, 0, 'beta', 2) => "1.2b2"
-version_info = (2, 4, 0, 'final', 0)
+version_info = (2, 4, 1, 'final', 0)
def _get_version():
" Returns a PEP 386-compliant version number from version_info. "
diff --git a/markdown/extensions/extra.py b/markdown/extensions/extra.py
index c4a0a97..8986ba6 100644
--- a/markdown/extensions/extra.py
+++ b/markdown/extensions/extra.py
@@ -75,12 +75,9 @@ class MarkdownInHtmlProcessor(BlockProcessor):
# Build list of indexes of each nest within the parent element.
nest_index = [] # a list of tuples: (left index, right index)
i = self.parser.blockprocessors.tag_counter + 1
- is_nest = self.parser.markdown.htmlStash.tag_data[i]['left_index']
- while len(self.parser.markdown.htmlStash.tag_data) > i and is_nest:
- left_child_index = \
- self.parser.markdown.htmlStash.tag_data[i]['left_index']
- right_child_index = \
- self.parser.markdown.htmlStash.tag_data[i]['right_index']
+ while len(self._tag_data) > i and self._tag_data[i]['left_index']:
+ left_child_index = self._tag_data[i]['left_index']
+ right_child_index = self._tag_data[i]['right_index']
nest_index.append((left_child_index - 1, right_child_index))
i += 1
@@ -92,35 +89,32 @@ class MarkdownInHtmlProcessor(BlockProcessor):
block[nest_index[-1][1]:], True) # nest
def run(self, parent, blocks, tail=None, nest=False):
+ self._tag_data = self.parser.markdown.htmlStash.tag_data
+
self.parser.blockprocessors.tag_counter += 1
- tag_data = self.parser.markdown.htmlStash.tag_data[
- self.parser.blockprocessors.tag_counter]
+ tag = self._tag_data[self.parser.blockprocessors.tag_counter]
# Create Element
- markdown_value = tag_data['attrs'].pop('markdown')
- element = util.etree.SubElement(parent, tag_data['tag'],
- tag_data['attrs'])
+ markdown_value = tag['attrs'].pop('markdown')
+ element = util.etree.SubElement(parent, tag['tag'], tag['attrs'])
# Slice Off Block
if nest:
self.parser.parseBlocks(parent, tail) # Process Tail
block = blocks[1:]
else: # includes nests since a third level of nesting isn't supported
- block = blocks[tag_data['left_index'] + 1:
- tag_data['right_index']]
- del blocks[:tag_data['right_index']]
+ block = blocks[tag['left_index'] + 1: tag['right_index']]
+ del blocks[:tag['right_index']]
# Process Text
if (self.parser.blockprocessors.contain_span_tags.match( # Span Mode
- tag_data['tag']) and markdown_value != 'block') or \
+ tag['tag']) and markdown_value != 'block') or \
markdown_value == 'span':
element.text = '\n'.join(block)
else: # Block Mode
i = self.parser.blockprocessors.tag_counter + 1
- if len(self.parser.markdown.htmlStash.tag_data) > i and self.\
- parser.markdown.htmlStash.tag_data[i]['left_index']:
- first_subelement_index = self.parser.markdown.htmlStash.\
- tag_data[i]['left_index'] - 1
+ if len(self._tag_data) > i and self._tag_data[i]['left_index']:
+ first_subelement_index = self._tag_data[i]['left_index'] - 1
self.parser.parseBlocks(
element, block[:first_subelement_index])
if not nest:
diff --git a/markdown/preprocessors.py b/markdown/preprocessors.py
index 1e10cfc..5bfca55 100644
--- a/markdown/preprocessors.py
+++ b/markdown/preprocessors.py
@@ -143,7 +143,7 @@ class HtmlBlockPreprocessor(Preprocessor):
"""
Same effect as concatenating the strings in items,
finding the character to which stringindex refers in that string,
- and returning the item in which that character resides.
+ and returning the index of the item in which that character resides.
"""
items.append('dummy')
i, count = 0, 0
@@ -175,8 +175,8 @@ class HtmlBlockPreprocessor(Preprocessor):
if len(items) - right_listindex <= 1: # last element
right_listindex -= 1
placeholder = self.markdown.htmlStash.store('\n\n'.join(
- items[i:right_listindex]))
- del items[i:right_listindex]
+ items[i:right_listindex + 1]))
+ del items[i:right_listindex + 1]
items.insert(i, placeholder)
return items
diff --git a/tests/extensions/extra/raw-html.html b/tests/extensions/extra/raw-html.html
index 897ad24..f8874c3 100644
--- a/tests/extensions/extra/raw-html.html
+++ b/tests/extensions/extra/raw-html.html
@@ -27,5 +27,11 @@ Note: Subelements are not required to have tail text.</div>
Raw html blocks may also be nested.
</div>
+
+
</div>
-<p>This text is after the markdown in html.</p> \ No newline at end of file
+<p>This text is after the markdown in html.</p>
+<div name="issue308">
+<p><span>1</span>
+<span>2</span></p>
+</div> \ No newline at end of file
diff --git a/tests/extensions/extra/raw-html.txt b/tests/extensions/extra/raw-html.txt
index e906910..0a82ccf 100644
--- a/tests/extensions/extra/raw-html.txt
+++ b/tests/extensions/extra/raw-html.txt
@@ -44,3 +44,10 @@ Raw html blocks may also be nested.
</div>
This text is after the markdown in html.
+
+<div markdown="1" name="issue308">
+
+<span>1</span>
+<span>2</span>
+
+</div>