diff options
| -rwxr-xr-x | gemini-to-web/example/build.sh | 2 | ||||
| -rw-r--r-- | gemini-to-web/src/gemini_to_web/html.py | 20 |
2 files changed, 20 insertions, 2 deletions
diff --git a/gemini-to-web/example/build.sh b/gemini-to-web/example/build.sh index 6086ab9..54e2e8f 100755 --- a/gemini-to-web/example/build.sh +++ b/gemini-to-web/example/build.sh @@ -18,3 +18,5 @@ HEAD uv --project .. run coppewebite-to-rss <target/index.gmi >target/index.rss --title Example --subtitle Subtitle --base-url https://www.example.com target/ find target -name '*.gmi' -exec sh -c 'uv --project .. run coppewebite-to-html <{} >$(echo {} | sed s/.gmi/.html/)' ';' + +uv --project .. run coppewebite-to-html <target/index.gmi >target/index.html --feed-href index.rss --feed-title foo diff --git a/gemini-to-web/src/gemini_to_web/html.py b/gemini-to-web/src/gemini_to_web/html.py index 9594155..ec2a640 100644 --- a/gemini-to-web/src/gemini_to_web/html.py +++ b/gemini-to-web/src/gemini_to_web/html.py @@ -12,7 +12,7 @@ def first_header_title_extractor(parsed: list[parser.GemElement]): return heading_lines[0].heading_text -def to_html(parsed: list[parser.GemElement], title_extractor=first_header_title_extractor): +def to_html(parsed: list[parser.GemElement], title_extractor=first_header_title_extractor, extra_head=None): body = [] building_element = None building_content = None @@ -27,6 +27,9 @@ def to_html(parsed: list[parser.GemElement], title_extractor=first_header_title_ if title_extractor: head.append(htmlgenerator.TITLE(title_extractor(parsed))) + if extra_head: + head += extra_head + for item in parsed: match item: case parser.HeadingLine(level, heading_text): @@ -96,11 +99,24 @@ def pretty(s): def cli_to_html(): + import argparse import sys + + argument_parser = argparse.ArgumentParser() + argument_parser.add_argument("--feed-title") + argument_parser.add_argument("--feed-href") + args = argument_parser.parse_args() + + assert not bool(args.feed_title) ^ bool(args.feed_href), "--feed-title and --feed-href must be both present or both absent" + + extra_head = [] + if args.feed_href: + extra_head.append(htmlgenerator.LINK(rel="alternate", type="application/rss+xml", title=args.feed_title, href=args.feed_href)) + input_ = sys.stdin.read() gemtext = parser.parse(input_) gemtext = list(gemtext) - html = to_html(gemtext) + html = to_html(gemtext, extra_head=extra_head) rendered = htmlgenerator.render(html, {}) rendered = pretty(rendered) print(rendered) |
