diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-29 04:23:02 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-29 04:23:02 +0000 |
commit | 943e3dc057eca53e68ddec51529bd6a1279ebd8e (patch) | |
tree | 61fb7bac619a56dfbcdcbdb7b0d4d6535fc36fe9 /myst_parser/cli.py | |
parent | Initial commit. (diff) | |
download | myst-parser-943e3dc057eca53e68ddec51529bd6a1279ebd8e.tar.xz myst-parser-943e3dc057eca53e68ddec51529bd6a1279ebd8e.zip |
Adding upstream version 0.18.1.upstream/0.18.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | myst_parser/cli.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/myst_parser/cli.py b/myst_parser/cli.py new file mode 100644 index 0000000..b9bb1ba --- /dev/null +++ b/myst_parser/cli.py @@ -0,0 +1,42 @@ +import argparse +import sys + +from markdown_it.renderer import RendererHTML + +from myst_parser.config.main import MdParserConfig +from myst_parser.parsers.mdit import create_md_parser + + +def print_anchors(args=None): + """ """ + arg_parser = argparse.ArgumentParser() + arg_parser.add_argument( + "input", + nargs="?", + type=argparse.FileType("r", encoding="utf8"), + default=sys.stdin, + help="Input file (default stdin)", + ) + arg_parser.add_argument( + "-o", + "--output", + type=argparse.FileType("w", encoding="utf8"), + default=sys.stdout, + help="Output file (default stdout)", + ) + arg_parser.add_argument( + "-l", "--level", type=int, default=2, help="Maximum heading level." + ) + args = arg_parser.parse_args(args) + parser = create_md_parser(MdParserConfig(heading_anchors=args.level), RendererHTML) + + def _filter_plugin(state): + state.tokens = [ + t + for t in state.tokens + if t.type.startswith("heading_") and int(t.tag[1]) <= args.level + ] + + parser.use(lambda p: p.core.ruler.push("filter", _filter_plugin)) + text = parser.render(args.input.read()) + args.output.write(text) |