summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwrmr2025-09-23 22:27:01 -0400
committerwrmr2025-09-23 22:27:01 -0400
commitbd3098691458c5747aaf32df5d07921350f9d7e9 (patch)
tree43a7d0cc0b66ebd067f844d60daf1fdd7f14924e
parent56be29a4d0987efe0de2e66ebe53ccc50d5f8962 (diff)
add h4
-rw-r--r--main.c29
1 files changed, 11 insertions, 18 deletions
diff --git a/main.c b/main.c
index eba5640..f52297d 100644
--- a/main.c
+++ b/main.c
@@ -142,6 +142,7 @@ typedef enum {
LN_HDR1,
LN_HDR2,
LN_HDR3,
+ LN_HDR4,
LN_NONE
} LineType;
@@ -173,6 +174,8 @@ int is_ol_item(Str s) {
LineType classify_line(Str line, LineType prev) {
if (line.n == 0) {
return LN_NONE;
+ } else if (str_starts(line, S("####"))) {
+ return LN_HDR4;
} else if (str_starts(line, S("###"))) {
return LN_HDR3;
} else if (str_starts(line, S("##"))) {
@@ -213,15 +216,10 @@ LineType line_init(Line *l, Str txt, LineType t) {
l->url = c.head;
l->txt = c.tail;
return has_image_ext(l->url) ? LN_IMG : LN_LINK;
- case LN_HDR1:
- l->txt = str_trim(str_skip(txt, 1));
- break;
- case LN_HDR2:
- l->txt = str_trim(str_skip(txt, 2));
- break;
- case LN_HDR3:
- l->txt = str_trim(str_skip(txt, 3));
- break;
+ case LN_HDR1: l->txt = str_trim(str_skip(txt, 1)); break;
+ case LN_HDR2: l->txt = str_trim(str_skip(txt, 2)); break;
+ case LN_HDR3: l->txt = str_trim(str_skip(txt, 3)); break;
+ case LN_HDR4: l->txt = str_trim(str_skip(txt, 4)); break;
case LN_ULIST:
l->txt = str_skip(txt, 2);
break;
@@ -474,15 +472,10 @@ void markup_block(Str *out, Block *blk, Arena *perm, Arena *scratch) {
Otl("<li>", l->txt, "</li>\n");
Os("<ol>");
break;
- case LN_HDR1:
- Otl("<h1>", l->txt, "</h1>");
- break;
- case LN_HDR2:
- Otl("<h2>", l->txt, "</h2>");
- break;
- case LN_HDR3:
- Otl("<h3>", l->txt, "</h3>");
- break;
+ case LN_HDR1: Otl("<h1>", l->txt, "</h1>"); break;
+ case LN_HDR2: Otl("<h2>", l->txt, "</h2>"); break;
+ case LN_HDR3: Otl("<h3>", l->txt, "</h3>"); break;
+ case LN_HDR4: Otl("<h4>", l->txt, "</h4>"); break;
default:
case LN_PAR:
Os("<p>");