Compare commits

..

13 Commits
0.6.1 ... 0.6.4

Author SHA1 Message Date
AlexVonB
079d1721aa Merge branch 'develop' 2021-02-21 20:58:34 +01:00
AlexVonB
ed406d3206 bump to v0.6.4 2021-02-21 20:57:57 +01:00
AlexVonB
f320cf87ff closing #25 and #18
Adds newlines after blockquotes, allowing for paragraphs after a
blockquote.

Due to merging problems with @lucafrance 's code I had to quickly copy
and paste their code. Thanks for the contribution!
2021-02-21 20:53:44 +01:00
AlexVonB
a4d134df97 Merge pull request #34 from BrunoMiguens/add-ignore-comment-tags
Add ignore comment tags
2021-02-07 19:46:49 +01:00
Bruno Miguens
457454c713 Add new line at the end of file 2021-02-05 19:49:57 +00:00
Bruno Miguens
321e9eb5f6 Add ignore comment tags 2021-02-05 19:40:43 +00:00
AlexVonB
bf24df3e2e bump to v0.6.3 2021-01-12 22:43:18 +01:00
AlexVonB
15329588b1 Merge branch 'develop' 2021-01-12 22:42:58 +01:00
AlexVonB
77d1e99bd5 satisfy linter 2021-01-12 22:42:06 +01:00
AlexVonB
34ad8485fa bump to v0.6.2 2021-01-12 22:40:03 +01:00
AlexVonB
f0ce934bf8 Merge branch 'develop' 2021-01-12 22:39:47 +01:00
AlexVonB
97c78ef55b Merge branch 'fix-extra-headline-whitespace' into develop 2021-01-12 22:38:59 +01:00
AlexVonB
4f8937810b dont replace newlines and tabs with spaces
this should fix #17, as all leading new lines
were replaced with a single space, which in turn
was rendered before the # of a headline
2020-12-29 10:28:50 +01:00
5 changed files with 30 additions and 9 deletions

View File

@@ -1,11 +1,11 @@
from bs4 import BeautifulSoup, NavigableString
from bs4 import BeautifulSoup, NavigableString, Comment
import re
import six
convert_heading_re = re.compile(r'convert_h(\d+)')
line_beginning_re = re.compile(r'^', re.MULTILINE)
whitespace_re = re.compile(r'[\r\n\s\t ]+')
whitespace_re = re.compile(r'[\t ]+')
html_heading_re = re.compile(r'h[1-6]')
@@ -75,7 +75,9 @@ class MarkdownConverter(object):
# Convert the children first
for el in node.children:
if isinstance(el, NavigableString):
if isinstance(el, Comment):
continue
elif isinstance(el, NavigableString):
text += self.process_text(six.text_type(el))
else:
text += self.process_tag(el, convert_children_as_inline)
@@ -146,7 +148,7 @@ class MarkdownConverter(object):
if convert_as_inline:
return text
return '\n' + line_beginning_re.sub('> ', text) if text else ''
return '\n' + (line_beginning_re.sub('> ', text) + '\n\n') if text else ''
def convert_br(self, el, text, convert_as_inline):
if convert_as_inline:

View File

@@ -10,7 +10,7 @@ read = lambda filepath: codecs.open(filepath, 'r', 'utf-8').read()
pkgmeta = {
'__title__': 'markdownify',
'__author__': 'Matthew Tretter',
'__version__': '0.6.1',
'__version__': '0.6.4',
}

View File

@@ -4,3 +4,13 @@ from markdownify import markdownify as md
def test_nested():
text = md('<p>This is an <a href="http://example.com/">example link</a>.</p>')
assert text == 'This is an [example link](http://example.com/).\n\n'
def test_ignore_comments():
text = md("<!-- This is a comment -->")
assert text == ""
def test_ignore_comments_with_other_tags():
text = md("<!-- This is a comment --><a href='http://example.com/'>example link</a>")
assert text == "[example link](http://example.com/)"

View File

@@ -10,4 +10,4 @@ def test_soup():
def test_whitespace():
assert md(' a b \n\n c ') == ' a b c '
assert md(' a b \t\t c ') == ' a b c '

View File

@@ -75,12 +75,16 @@ def test_b_spaces():
def test_blockquote():
assert md('<blockquote>Hello</blockquote>').strip() == '> Hello'
assert md('<blockquote>Hello</blockquote>') == '\n> Hello\n\n'
def test_blockquote_with_paragraph():
assert md('<blockquote>Hello</blockquote><p>handsome</p>') == '\n> Hello\n\nhandsome\n\n'
def test_nested_blockquote():
text = md('<blockquote>And she was like <blockquote>Hello</blockquote></blockquote>').strip()
assert text == '> And she was like \n> > Hello'
text = md('<blockquote>And she was like <blockquote>Hello</blockquote></blockquote>')
assert text == '\n> And she was like \n> > Hello\n> \n> \n\n'
def test_br():
@@ -111,6 +115,11 @@ def test_hn():
assert md('<h6>Hello</h6>') == '###### Hello\n\n'
def test_hn_chained():
assert md('<h1>First</h1>\n<h2>Second</h2>\n<h3>Third</h3>', heading_style=ATX) == '# First\n\n\n## Second\n\n\n### Third\n\n'
assert md('X<h1>First</h1>', heading_style=ATX) == 'X# First\n\n'
def test_hn_nested_tag_heading_style():
assert md('<h1>A <p>P</p> C </h1>', heading_style=ATX_CLOSED) == '# A P C #\n\n'
assert md('<h1>A <p>P</p> C </h1>', heading_style=ATX) == '# A P C\n\n'