Compare commits

..

15 Commits
0.6.5 ... 0.6.6

Author SHA1 Message Date
AlexVonB
2d0cd97323 Merge branch 'develop' 2021-04-22 12:13:03 +02:00
AlexVonB
d4882b86b9 bump to v0.6.6 2021-04-22 12:12:51 +02:00
AlexVonB
b47d5f11c8 Merge pull request #37 from andredelft/develop
Add `strong_em_symbol` and `newline` options to the converter
2021-04-18 21:35:16 +02:00
André van Delft
29c794e17d Introduce OPTIONs for strong_em_symbol 2021-04-18 18:13:29 +02:00
André van Delft
e877602a5e Separate the strong_em_symbol and newline style tests 2021-04-05 11:28:42 +02:00
André van Delft
5580b0b51d Update README.rst 2021-04-05 11:13:52 +02:00
André van Delft
650f377b64 Fix linting 2021-04-05 11:13:19 +02:00
André van Delft
7ee87b1d32 Use .lower() on _style option fetching 2021-04-05 10:50:23 +02:00
André van Delft
16dbc471b9 Test newline_style 2021-04-05 10:47:55 +02:00
André van Delft
c04ec855dd Change option to newline_style and use variables like heading_style does 2021-04-05 10:44:20 +02:00
André van Delft
8da0bdf998 Test strong_em_symbol 2021-04-05 10:28:46 +02:00
André van Delft
a79ed44ec3 Fix code ticks in README 2021-02-15 16:51:20 +01:00
André van Delft
29a4e551f7 Update README with the two new options 2021-02-15 16:37:13 +01:00
André van Delft
b3ac4606a6 Allow for the use of backslash for newlines 2021-02-15 16:29:14 +01:00
André van Delft
f093843f40 Allow for a custom strong or emphasis symbol 2021-02-15 16:19:19 +01:00
4 changed files with 44 additions and 6 deletions

View File

@@ -75,6 +75,18 @@ bullets
lists are nested. Otherwise, the bullet will alternate based on nesting
level. Defaults to ``'*+-'``.
strong_em_symbol
In markdown, both ``*`` and ``_`` are used to encode **strong** or
*emphasized* texts. Either of these symbols can be chosen by the options
``ASTERISK`` (default) or ``UNDERSCORE`` respectively.
newline_style
Defines the style of marking linebreaks (``<br>``) in markdown. The default
value ``SPACES`` of this option will adopt the usual two spaces and a newline,
while ``BACKSLASH`` will convert a linebreak to ``\\n`` (a backslash an a
newline). While the latter convention is non-standard, it is commonly
preferred and supported by a lot of interpreters.
Options may be specified as kwargs to the ``markdownify`` function, or as a
nested ``Options`` class in ``MarkdownConverter`` subclasses.

View File

@@ -15,6 +15,14 @@ ATX_CLOSED = 'atx_closed'
UNDERLINED = 'underlined'
SETEXT = UNDERLINED
# Newline style
SPACES = 'spaces'
BACKSLASH = 'backslash'
# Strong and emphasis style
ASTERISK = '*'
UNDERSCORE = '_'
def escape(text):
if not text:
@@ -46,6 +54,8 @@ class MarkdownConverter(object):
autolinks = True
heading_style = UNDERLINED
bullets = '*+-' # An iterable of bullet types.
strong_em_symbol = ASTERISK
newline_style = SPACES
class Options(DefaultOptions):
pass
@@ -154,19 +164,23 @@ class MarkdownConverter(object):
if convert_as_inline:
return ""
return ' \n'
if self.options['newline_style'].lower() == BACKSLASH:
return '\\\n'
else:
return ' \n'
def convert_em(self, el, text, convert_as_inline):
em_tag = self.options['strong_em_symbol']
prefix, suffix, text = chomp(text)
if not text:
return ''
return '%s*%s*%s' % (prefix, text, suffix)
return '%s%s%s%s%s' % (prefix, em_tag, text, em_tag, suffix)
def convert_hn(self, n, el, text, convert_as_inline):
if convert_as_inline:
return text
style = self.options['heading_style']
style = self.options['heading_style'].lower()
text = text.rstrip()
if style == UNDERLINED and n <= 2:
line = '=' if n == 1 else '-'
@@ -222,10 +236,11 @@ class MarkdownConverter(object):
return '%s\n\n' % text if text else ''
def convert_strong(self, el, text, convert_as_inline):
strong_tag = 2 * self.options['strong_em_symbol']
prefix, suffix, text = chomp(text)
if not text:
return ''
return '%s**%s**%s' % (prefix, text, suffix)
return '%s%s%s%s%s' % (prefix, strong_tag, text, strong_tag, suffix)
def convert_img(self, el, text, convert_as_inline):
alt = el.attrs.get('alt', None) or ''

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.5',
'__version__': '0.6.6',
}

View File

@@ -1,4 +1,4 @@
from markdownify import markdownify as md, ATX, ATX_CLOSED
from markdownify import markdownify as md, ATX, ATX_CLOSED, BACKSLASH, UNDERSCORE
import re
@@ -220,3 +220,14 @@ def test_img():
def test_div():
assert md('Hello</div> World') == 'Hello World'
def test_strong_em_symbol():
assert md('<strong>Hello</strong>', strong_em_symbol=UNDERSCORE) == '__Hello__'
assert md('<b>Hello</b>', strong_em_symbol=UNDERSCORE) == '__Hello__'
assert md('<em>Hello</em>', strong_em_symbol=UNDERSCORE) == '_Hello_'
assert md('<i>Hello</i>', strong_em_symbol=UNDERSCORE) == '_Hello_'
def test_newline_style():
assert md('a<br />b<br />c', newline_style=BACKSLASH) == 'a\\\nb\\\nc'