Open nschloe opened 8 months ago
Hi @nschloe, the behavior you describe seems to be intentional, or say "by-design" to me. It is the Document
class constructor which adds the new newline (\n
) if it is missing in the input:
class Document(BlockToken):
"""
Document token.
This is a container block token. Its children are block tokens - container or leaf ones.
Attributes:
footnotes (dictionary): link reference definitions.
"""
def __init__(self, lines):
if isinstance(lines, str):
lines = lines.splitlines(keepends=True)
lines = [line if line.endswith('\n') else '{}\n'.format(line) for line in lines]
# ...
I'm not sure if this should be / can be safely changed. So closing for now, but feel free to reopen this issue if needed.
Not sure why you put in this workaround. The only situation I could imagine where it does anything is to append a missing terminal "\n"
and to add "\n"
where "\r"
is a line break. Don't know why you'd want either of those.
I'd always expect a parse-render loop to stay as faithful to the input as possible, unless it's illegal input; error out then. What's your take on this?
Yeah, I'm not sure either why this was introduced by the original author 5 years ago. As you write, this could possibly deserve some investigation, so I'm reopening this...
MWE:
Output:
Expected output: