docs: make mkdocs_hooks.transform more robust
- Keeps the markdown inside the code blocks as is - Logs the modified lines (mkdocs serve —verbose) Signed-off-by: Damien Martin <damlobster@gmail.com>
This commit is contained in:
parent
ea802aa91e
commit
afca515e2c
|
@ -1,18 +1,31 @@
|
||||||
import re
|
import re
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger('mkdocs.mkdocs_hooks.transform')
|
||||||
|
|
||||||
def transform(markdown: str, page, config, files):
|
def transform(markdown: str, page, config, files):
|
||||||
|
in_code_block = 0
|
||||||
in_list = False
|
in_list = False
|
||||||
lines = markdown.splitlines()
|
lines = markdown.splitlines()
|
||||||
for i in range(len(lines)):
|
for i in range(len(lines)):
|
||||||
lines[i] = lines[i].replace('](../',
|
line_out = lines[i]
|
||||||
|
in_code_block = (in_code_block +
|
||||||
|
len(re.findall("\s*[`]{3,}", line_out))) % 2
|
||||||
|
if not in_code_block:
|
||||||
|
line_out = line_out.replace('](../',
|
||||||
f"]({config['repo_url']}blob/master/")
|
f"]({config['repo_url']}blob/master/")
|
||||||
lines[i] = re.sub(r"\\", "<br>", lines[i])
|
line_out = re.sub("\\\s*$", "<br>", line_out)
|
||||||
# check that lists at level 0 are not indented (no space before *|-|1.)
|
# check that lists at level 0 are not indented
|
||||||
if len(lines[i]) == 0:
|
# (no space before *|-|1.)
|
||||||
|
if len(line_out) == 0:
|
||||||
in_list = False
|
in_list = False
|
||||||
elif re.match(r"^(\*|-|\d+\.) ", lines[i]):
|
elif re.match(r"^(\*|-|\d+\.) ", line_out):
|
||||||
in_list = True
|
in_list = True
|
||||||
if not in_list:
|
if not in_list:
|
||||||
lines[i] = re.sub(r"^\s+(\*|-|\d+\.) ", r"\1 ", lines[i])
|
line_out = re.sub(r"^\s+(\*|-|\d+\.) ", r"\1 ", line_out)
|
||||||
|
if line_out != lines[i]:
|
||||||
|
logger.debug((f'[mkdocs_hooks] rewrite line {i+1}: '
|
||||||
|
f'"{lines[i]}" -> "{line_out}"'))
|
||||||
|
lines[i] = line_out
|
||||||
output = "\n".join(lines)
|
output = "\n".join(lines)
|
||||||
return output
|
return output
|
||||||
|
|
Loading…
Reference in New Issue