Skip to content

Commit 5122c97

Browse files
authored
add missing newlines for definition lists (#200)
Signed-off-by: chrispy <[email protected]>
1 parent ac5736f commit 5122c97

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

Diff for: markdownify/__init__.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ def should_remove_whitespace_inside(el):
106106
return el.name in ('p', 'blockquote',
107107
'article', 'div', 'section',
108108
'ol', 'ul', 'li',
109+
'dl', 'dt', 'dd',
109110
'table', 'thead', 'tbody', 'tfoot',
110111
'tr', 'td', 'th')
111112

@@ -489,6 +490,11 @@ def _indent_for_dd(match):
489490

490491
return '%s\n' % text
491492

493+
# definition lists are formatted as follows:
494+
# https://pandoc.org/MANUAL.html#definition-lists
495+
# https://michelf.ca/projects/php-markdown/extra/#def-list
496+
convert_dl = convert_div
497+
492498
def convert_dt(self, el, text, parent_tags):
493499
# remove newlines from term text
494500
text = (text or '').strip()
@@ -501,7 +507,7 @@ def convert_dt(self, el, text, parent_tags):
501507
# TODO - format consecutive <dt> elements as directly adjacent lines):
502508
# https://michelf.ca/projects/php-markdown/extra/#def-list
503509

504-
return '\n%s\n' % text
510+
return '\n\n%s\n' % text
505511

506512
def _convert_hn(self, n, el, text, parent_tags):
507513
""" Method name prefixed with _ to prevent <hn> to call this """

Diff for: tests/test_conversions.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,13 @@ def test_code():
102102

103103

104104
def test_dl():
105-
assert md('<dl><dt>term</dt><dd>definition</dd></dl>') == '\nterm\n: definition\n'
106-
assert md('<dl><dt><p>te</p><p>rm</p></dt><dd>definition</dd></dl>') == '\nte rm\n: definition\n'
107-
assert md('<dl><dt>term</dt><dd><p>definition-p1</p><p>definition-p2</p></dd></dl>') == '\nterm\n: definition-p1\n\n definition-p2\n'
108-
assert md('<dl><dt>term</dt><dd><p>definition 1</p></dd><dd><p>definition 2</p></dd></dl>') == '\nterm\n: definition 1\n: definition 2\n'
109-
assert md('<dl><dt>term 1</dt><dd>definition 1</dd><dt>term 2</dt><dd>definition 2</dd></dl>') == '\nterm 1\n: definition 1\nterm 2\n: definition 2\n'
110-
assert md('<dl><dt>term</dt><dd><blockquote><p>line 1</p><p>line 2</p></blockquote></dd></dl>') == '\nterm\n: > line 1\n >\n > line 2\n'
111-
assert md('<dl><dt>term</dt><dd><ol><li><p>1</p><ul><li>2a</li><li>2b</li></ul></li><li><p>3</p></li></ol></dd></dl>') == '\nterm\n: 1. 1\n\n * 2a\n * 2b\n 2. 3\n'
105+
assert md('<dl><dt>term</dt><dd>definition</dd></dl>') == '\n\nterm\n: definition\n\n'
106+
assert md('<dl><dt><p>te</p><p>rm</p></dt><dd>definition</dd></dl>') == '\n\nte rm\n: definition\n\n'
107+
assert md('<dl><dt>term</dt><dd><p>definition-p1</p><p>definition-p2</p></dd></dl>') == '\n\nterm\n: definition-p1\n\n definition-p2\n\n'
108+
assert md('<dl><dt>term</dt><dd><p>definition 1</p></dd><dd><p>definition 2</p></dd></dl>') == '\n\nterm\n: definition 1\n: definition 2\n\n'
109+
assert md('<dl><dt>term 1</dt><dd>definition 1</dd><dt>term 2</dt><dd>definition 2</dd></dl>') == '\n\nterm 1\n: definition 1\n\nterm 2\n: definition 2\n\n'
110+
assert md('<dl><dt>term</dt><dd><blockquote><p>line 1</p><p>line 2</p></blockquote></dd></dl>') == '\n\nterm\n: > line 1\n >\n > line 2\n\n'
111+
assert md('<dl><dt>term</dt><dd><ol><li><p>1</p><ul><li>2a</li><li>2b</li></ul></li><li><p>3</p></li></ol></dd></dl>') == '\n\nterm\n: 1. 1\n\n * 2a\n * 2b\n 2. 3\n\n'
112112

113113

114114
def test_del():

0 commit comments

Comments
 (0)