diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py
index fdcf7a9..9a3136d 100644
--- a/renderer/fifty_ohm_html_renderer.py
+++ b/renderer/fifty_ohm_html_renderer.py
@@ -26,4 +26,8 @@ class FiftyOhmHtmlRenderer(HtmlRenderer):
return f"{token.first} {token.second}"
def render_nonbreaking_spaces_dots(self, token):
- return f" {token.first} "
\ No newline at end of file
+ lookup = {
+ "" : "",
+ " " : " "
+ }
+ return f"{lookup[token.first]}{token.second}{lookup[token.third]}"
\ No newline at end of file
diff --git a/renderer/nonbreaking_spaces.py b/renderer/nonbreaking_spaces.py
index d800b10..932653f 100644
--- a/renderer/nonbreaking_spaces.py
+++ b/renderer/nonbreaking_spaces.py
@@ -7,7 +7,6 @@ class NonbreakingSpaces(SpanToken):
"""
Insert unbreakable space into span token (§ 3)
Identifies "§$number", "Abs.$number", "Klasse [A,E,N]" w/ and w\ space between.
- Identifies "..." with and without leading and trailing space
"""
pattern = re.compile(r"(§|Abs\.|Klasse)\s?(\d|[NEA])")
@@ -16,10 +15,16 @@ class NonbreakingSpaces(SpanToken):
self.second = match_object.group(2)
class NonbreakingSpacesDots(SpanToken):
- pattern = re.compile(r"\s?(\.\.\.)\s?")
+ """
+ Insert unbreakable space before and after "..." if there is a space
+ Identifies "..." with leading and/or trailing space
+ """
+ pattern = re.compile(r"(\s?)(\.\.\.)(\s?)")
def __init__(self, match_object):
self.first = match_object.group(1)
+ self.second = match_object.group(2)
+ self.third = match_object.group(3)
diff --git a/test/test_nonbreaking_spaces.py b/test/test_nonbreaking_spaces.py
index 0d6c3cc..88fb8cb 100644
--- a/test/test_nonbreaking_spaces.py
+++ b/test/test_nonbreaking_spaces.py
@@ -10,10 +10,15 @@ def test_paragraph_html():
assert mistletoe.markdown(input, FiftyOhmHtmlRenderer) == paragraph(target)
def test_three_points_html():
- input = "Heute hatte ich ... zum Mittagessen."
- target = "Heute hatte ich ... zum Mittagessen."
+ assertions = {
+ "Heute hatte ich ... zum Mittagessen." : "Heute hatte ich ... zum Mittagessen.",
+ "Niemals hätte ich gedacht, dass...ich ...nicht kann." : "Niemals hätte ich gedacht, dass...ich ...nicht kann.",
+ "Oh nein ...ein Pinguin." : "Oh nein ...ein Pinguin.",
+ "Haha .. . Hahaha" : "Haha .. . Hahaha"
+ }
- assert mistletoe.markdown(input, FiftyOhmHtmlRenderer) == paragraph(target)
+ for key, value in assertions.items():
+ assert mistletoe.markdown(key, FiftyOhmHtmlRenderer) == paragraph(value)
def test_absatz_html():