diff options
-rw-r--r-- | markdown/__init__.py | 2 | ||||
-rw-r--r-- | markdown/__version__.py | 2 | ||||
-rw-r--r-- | markdown/extensions/extra.py | 32 | ||||
-rw-r--r-- | markdown/preprocessors.py | 6 | ||||
-rw-r--r-- | tests/extensions/extra/raw-html.html | 8 | ||||
-rw-r--r-- | tests/extensions/extra/raw-html.txt | 7 |
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> |