Source code for panvimwiki.filter.wikilink_markdown
#!/usr/bin/env python3
r"""
Convert GitHub Flavored Markdown (gfm) to Vimwiki/Taskwiki syntax.
- Remove backslashes from [ ] tasks
- Remove backslashes from apostrophe-s, \`s.
- Remove link title "wikilink".
- Unescape taskwiki octothorpe and use asterisk-marker.
Plain text prefilter or post filter
"""
from __future__ import annotations
import re
import sys
import mdformat
DELETE = None
REPLACE = (
# Remove backslashes from [ ] tasks.
dict(
pattern=r"\\\[(\S|\s)\\\]",
repl=r"[\1]",
),
# Remove backslashes from apostrophe-s, `s.
dict(
pattern=r"\\'s",
repl=r"'s",
),
# Remove link title "wikilink".
dict(
pattern=r" \"wikilink\"\)",
repl=r")",
),
dict(
pattern=r"\{\.wikilink\}",
repl=r"",
),
# Unescape taskwiki octothorpe and use asterisk-marker.
dict(
pattern=r"(^\s{0,})-(\s\[.*)\\(#[0-9A-Fa-f]{8})$",
repl=r"\1*\2\3",
),
)
[docs]
def main():
"""Filter stdio with action()."""
lines = sys.stdin.read()
for subst in REPLACE:
lines = re.sub(**subst, string=lines, flags=re.MULTILINE)
print(
mdformat.text(
lines.rstrip("\n"),
options={"number": True},
extensions=(
"myst",
"simple_breaks",
"wikilink",
),
),
)
if __name__ == "__main__":
main()