commit ceb3f79c2c41bff56bd6e889c994f4dd0f50b4ed from: Omar Polo date: Thu Sep 29 16:36:02 2022 UTC wrap preformatted in a figure and provide a caption too (if any) commit - 4d930a2a591067b00a784d473d6057852c0db015 commit + ceb3f79c2c41bff56bd6e889c994f4dd0f50b4ed blob - 247227d68b9b71846c482dfc9b1561bb73d928ee blob + 12121d55c13c8b7a7fed84a1d5d9ac1da19d43ce --- fragments.tmpl +++ fragments.tmpl @@ -108,6 +108,19 @@ gemini://{{ host }}{{ path }} {{ end }} +{{ define tp_pre_open(struct template *tp, const char *label) }} +
+ {{ if label && *label != '\0' }} +
{{ label }}
+ {{ end }} +
+{{ end }}
+
+{{ define tp_pre_close(struct template *tp) }}
+	
+
+{{ end }} + {{ define tp_error(struct template *tp, int code, const char *reason) }} {! char scode[32]; blob - 7b231a37a5d7a9b18b2f512531ade949da367f18 blob + 780ecc4358beca7c292d1792d131340fec64f4aa --- galileo.h +++ galileo.h @@ -191,6 +191,8 @@ int fcgi_client_cmp(struct client *, struct client *) int tp_head(struct template *, const char *, const char *); int tp_foot(struct template *); int tp_figure(struct template *, const char *, const char *); +int tp_pre_open(struct template *, const char *); +int tp_pre_close(struct template *); int tp_error(struct template *, int, const char *); int tp_inputpage(struct template *, const char *); blob - 2a6a5d4605f6a2ed7b0287124aee17c8f761a728 blob + 5dee18352a5f4d3df78485a655871e955d224508 --- proxy.c +++ proxy.c @@ -166,7 +166,7 @@ gemtext_translate_line(struct client *clt, char *line) if (clt->clt_translate & TR_PRE) { if (!strncmp(line, "```", 3)) { clt->clt_translate &= ~TR_PRE; - return (clt_puts(clt, "")); + return (tp_pre_close(clt->clt_tp)); } if (tp_htmlescape(clt->clt_tp, line) == -1) @@ -268,8 +268,11 @@ gemtext_translate_line(struct client *clt, char *line) /* pre opening */ if (!strncmp(line, "```", 3)) { + line += 3; + line += strspn(line, " \t"); + clt->clt_translate |= TR_PRE; - return (clt_puts(clt, "
"));
+		return (tp_pre_open(clt->clt_tp, line));
 	}
 
 	/* citation block */
@@ -783,7 +786,7 @@ proxy_error(struct bufferevent *bev, short err, void *
 			return;
 	} else if (status == 0) {
 		if (clt->clt_translate & TR_PRE) {
-			if (clt_puts(clt, "
")) + if (tp_pre_close(clt->clt_tp)) return; clt->clt_translate &= ~TR_PRE; }