in releasedocmaker/src/main/python/releasedocmaker/utils.py [0:0]
def sanitize_text(input_string):
""" Sanitize arbitrary text so it can be embedded in MultiMarkdown output.
Note that MultiMarkdown is not Markdown, and cannot be parsed as such.
For instance, when using pandoc, invoke it as `pandoc -f markdown_mmd`.
Calls sanitize_markdown at the end as a final pass.
"""
escapes = {}
# See: https://daringfireball.net/projects/markdown/syntax#backslash
# We only escape a subset of special characters. We ignore characters
# that only have significance at the start of a line.
slash_escapes = "_<>*|"
slash_escapes += "`"
slash_escapes += "\\"
all_chars = set()
# Construct a set of escapes
for char in slash_escapes:
all_chars.add(char)
for char in all_chars:
escapes[char] = "\\" + char
# Build the output string character by character to prevent double escaping
output_string = ""
for char in input_string:
out = char
if escapes.get(char):
out = escapes[char]
output_string += out
return sanitize_markdown(output_string.rstrip())