about summary refs log tree commit diff
path: root/html.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-04-16 10:44:35 -0400
committerJune McEnroe <june@causal.agency>2020-04-16 10:44:35 -0400
commit43f68d46baede7e91aa5d061a06112b74f3ac609 (patch)
tree40cfff80ed4e57673a2ed3e6cb6656cd4d25aa10 /html.c
parentRender message links before to/cc (diff)
downloadbubger-43f68d46baede7e91aa5d061a06112b74f3ac609.tar.gz
bubger-43f68d46baede7e91aa5d061a06112b74f3ac609.zip
Render text/plain to HTML
Diffstat (limited to 'html.c')
-rw-r--r--html.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/html.c b/html.c
index 677bed0..b977137 100644
--- a/html.c
+++ b/html.c
@@ -144,6 +144,27 @@ int htmlMessageOpen(FILE *file, const struct Envelope *envelope) {
 	return error;
 }
 
+int htmlInlineOpen(FILE *file, const struct BodyPart *part) {
+	// TODO: Include Content-Id as id?
+	const char *template = TEMPLATE(
+		<pre lang="[lang]">
+	);
+	const char *lang = "";
+	// FIXME: part->language should be more structured.
+	if (part->language.len && part->language.ptr[0].type == String) {
+		lang = part->language.ptr[0].string;
+	}
+	struct Variable vars[] = {
+		{ "lang", lang },
+		{0},
+	};
+	return templateRender(file, template, vars, escapeXML);
+}
+
+int htmlInlineClose(FILE *file) {
+	return templateRender(file, TEMPLATE(</pre>), NULL, NULL);
+}
+
 int htmlMessageClose(FILE *file) {
 	return templateRender(file, TEMPLATE(</article>), NULL, NULL);
 }