diff --git a/markdownify/__init__.py b/markdownify/__init__.py index 7f69bfe..c14f015 100644 --- a/markdownify/__init__.py +++ b/markdownify/__init__.py @@ -362,11 +362,11 @@ def get_conv_fn(self, tag_name): if not self.should_convert_tag(tag_name): return None - # Handle headings with _convert_hn() function + # Handle headings with convert_hN() function match = re_html_heading.match(tag_name) if match: n = int(match.group(1)) - return lambda el, text, parent_tags: self._convert_hn(n, el, text, parent_tags) + return lambda el, text, parent_tags: self.convert_hN(n, el, text, parent_tags) # For other tags, look up their conversion function by tag name convert_fn_name = "convert_%s" % re_make_convert_fn_name.sub('_', tag_name) @@ -509,12 +509,12 @@ def convert_dt(self, el, text, parent_tags): return '\n\n%s\n' % text - def _convert_hn(self, n, el, text, parent_tags): - """ Method name prefixed with _ to prevent to call this """ + def convert_hN(self, n, el, text, parent_tags): + # convert_hN() converts tags, where N is any integer if '_inline' in parent_tags: return text - # prevent MemoryErrors in case of very large n + # Markdown does not support heading depths of n > 6 n = max(1, min(6, n)) style = self.options['heading_style'].lower() diff --git a/tests/test_conversions.py b/tests/test_conversions.py index 0df8f57..27951ee 100644 --- a/tests/test_conversions.py +++ b/tests/test_conversions.py @@ -164,7 +164,8 @@ def test_hn(): assert md('
Hello
') == '\n\n##### Hello\n\n' assert md('
Hello
') == '\n\n###### Hello\n\n' assert md('Hello') == md('
Hello
') - assert md('Hello') == md('Hello') + assert md('Hello') == md('

Hello

') + assert md('Hello') == md('Hello') def test_hn_chained(): diff --git a/tests/test_custom_converter.py b/tests/test_custom_converter.py index f4734c9..26faf90 100644 --- a/tests/test_custom_converter.py +++ b/tests/test_custom_converter.py @@ -12,7 +12,11 @@ def convert_img(self, el, text, parent_tags): def convert_custom_tag(self, el, text, parent_tags): """Ensure conversion function is found for tags with special characters in name""" - return "FUNCTION USED: %s" % text + return "convert_custom_tag(): %s" % text + + def convert_hN(self, n, el, text, parent_tags): + """Ensure conversion function is found for headings""" + return "convert_hN(%d): %s" % (n, text) def test_custom_conversion_functions(): @@ -23,7 +27,9 @@ def md(html, **options): assert md('Alt texttext') == '![Alt text](/path/to/img.jpg "Optional title")\n\ntext' assert md('Alt texttext') == '![Alt text](/path/to/img.jpg)\n\ntext' - assert md("text") == "FUNCTION USED: text" + assert md("text") == "convert_custom_tag(): text" + + assert md("

text

") == "convert_hN(3): text" def test_soup():