From 987940e91b79c457e285141d1c159ffed003f11d Mon Sep 17 00:00:00 2001 From: Kyler Olsen Date: Mon, 27 Oct 2025 12:52:13 -0600 Subject: [PATCH] Add PrependNewLine extension for Markdown processing --- .gitignore | 1 - prependnewline.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 prependnewline.py diff --git a/.gitignore b/.gitignore index 3ccbd54..2a3a7e9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ www/ __pycache__/ -prependnewline.py *.tar diff --git a/prependnewline.py b/prependnewline.py new file mode 100644 index 0000000..b7a3b97 --- /dev/null +++ b/prependnewline.py @@ -0,0 +1,43 @@ +# https://gitlab.com/ayblaq/prependnewline +""" +==================================== +Markdown PrependNewLine Extension +==================================== +:copyright: Copyright 2019 Ayobami Adewale +:license: MIT, see LICENSE for details. + +""" + +from __future__ import absolute_import +from __future__ import unicode_literals +from markdown.extensions import Extension +from markdown.preprocessors import Preprocessor + + +class PrependNewLineExtension(Extension): + """ PrependNewLine Extension for Python-Markdown. """ + + def extendMarkdown(self, md): + """ Insert PrependNewLinePreprocessor before ReferencePreprocessor. """ + md.preprocessors.register(PrependNewLinePreprocessor(md), 'prependnewline', 12) + + +class PrependNewLinePreprocessor(Preprocessor): + """ PrependNewLine Preprocessor - finds list in a document and prepends a newline. """ + + def run(self, lines): + ''' + Find all list from the text. + Each reference is prepended with a new line. + ''' + new_text = [] + for line in lines: + if len(line) > 0: + if (line[0].isdigit() or line[0] == '*') and line[len(line) - 1] != '*': + line = '\n' + line + new_text.append(line) + return new_text + + +def makeExtension(**kwargs): # pragma: no cover + return PrependNewLineExtension(**kwargs)