aboutsummaryrefslogtreecommitdiff
path: root/blog_experiment/blog/html.py
diff options
context:
space:
mode:
Diffstat (limited to 'blog_experiment/blog/html.py')
-rw-r--r--blog_experiment/blog/html.py101
1 files changed, 0 insertions, 101 deletions
diff --git a/blog_experiment/blog/html.py b/blog_experiment/blog/html.py
deleted file mode 100644
index 8aa92f4a..00000000
--- a/blog_experiment/blog/html.py
+++ /dev/null
@@ -1,101 +0,0 @@
-import itertools
-
-import htmlgenerator as h
-
-from blog import meta, pretty, gemtext
-
-
-def html_template(*content, page_title=None):
- title = [h.A(meta.TITLE, href=f"{meta.SCHEMA}://{meta.HOST}")]
- if page_title:
- title += f" - {page_title}"
-
- title = h.BaseElement(*title)
-
- links = list(itertools.chain(*[(h.A(text, href=href), ", ") for text, href in meta.LINKS]))
-
- links += h.BaseElement(f" {meta.EMAIL_TEXT}")
-
- return pretty.pretty_html(h.render(
- h.HTML(
- h.HEAD(
- h.TITLE(meta.TITLE + (f" - {page_title}" if page_title else "")),
- h.LINK(rel="alternate", type="application/rss+xml", title=meta.TITLE, href=f"{meta.SCHEMA}://{meta.HOST}/feed/"),
- ),
- h.BODY(
- h.H1(title),
- h.H2(meta.SUBTITLE),
- h.P(*links),
- *content,
- ),
- doctype="html",
- ),
- {},
- ))
-
-
-def gemini_to_html(parsed):
- i = 0
- result = []
- while i < len(parsed):
- gem_element = parsed[i]
-
- if isinstance(gem_element, gemtext.Header):
- header = [h.H1, h.H2, h.H3, h.H4, h.H5, h.H6][gem_element.level - 1]
- result.append(header(gem_element.text))
- i = i + 1
- continue
-
- if isinstance(gem_element, gemtext.List):
- result.append(h.UL(*[h.LI(i.text) for i in gem_element.items]))
- i = i + 1
- continue
-
- if isinstance(gem_element, gemtext.Link):
- url = gem_element.url
- if url.startswith("gemini://"):
- if url.startswith("gemini://alex.corcoles.net/"):
- url = url.replace("gemini://alex.corcoles.net/", f"{meta.SCHEMA}://{meta.HOST}/")
- else:
- url = url.replace("gemini://", "https://portal.mozz.us/gemini/")
-
- result.append(h.P(h.A(gem_element.text or gem_element.url, href=url)))
- i = i + 1
- continue
-
- if gem_element == gemtext.Line(""):
- i = i + 1
- continue
-
- if isinstance(gem_element, gemtext.BlockQuote):
- content = []
- for line in gem_element.lines:
- if line.text:
- content.append(line.text)
- content.append(h.BR())
- result.append(h.BLOCKQUOTE(*content))
- i = i + 1
- continue
-
- if isinstance(gem_element, gemtext.Line):
- paragraph = [gem_element.text]
- i = i + 1
- while i < len(parsed):
- gem_element = parsed[i]
- if isinstance(gem_element, gemtext.Line) and gem_element.text != "":
- paragraph.append(h.BR())
- paragraph.append(gem_element.text)
- i = i + 1
- else:
- break
- result.append(h.P(*paragraph))
- continue
-
- if isinstance(gem_element, gemtext.Pre):
- result.append(h.PRE(gem_element.content))
- i = i + 1
- continue
-
- assert False, f"unknown element {gem_element}"
-
- return result