3 335917eb 2022-05-10 op gmi2txt is a small script to format a text/gemini page. needs par(1)
5 335917eb 2022-05-10 op #!/usr/bin/awk -f
10 335917eb 2022-05-10 op title1 = "sed s/./=/g"
11 335917eb 2022-05-10 op title2 = "sed s/./-/g"
12 335917eb 2022-05-10 op parl = "par 72p2"
13 335917eb 2022-05-10 op pari = "par 72p3 | sed '2,$s/^ \\*/ /'"
14 335917eb 2022-05-10 op parq = "par 72p2"
15 335917eb 2022-05-10 op par = "par 72"
18 335917eb 2022-05-10 op !in_pre && /^```/ {
23 335917eb 2022-05-10 op in_pre && /^```/ {
28 335917eb 2022-05-10 op in_pre { print $0; next }
31 335917eb 2022-05-10 op # print a blank line between links and other line
32 335917eb 2022-05-10 op # types, unless there's already a blank line.
34 335917eb 2022-05-10 op if (last_was_link && !match($0, "^[ \t]*$")) {
40 335917eb 2022-05-10 op last_was_link = 1
42 335917eb 2022-05-10 op $0 = gensub("=> *", "", 1)
45 335917eb 2022-05-10 op text = gensub("^ *", "", 1)
46 335917eb 2022-05-10 op if (text == "")
49 335917eb 2022-05-10 op printf("~ %s\n", text) | parl
50 335917eb 2022-05-10 op printf("%s\n", link)
55 335917eb 2022-05-10 op // { last_was_link = 0 }
58 335917eb 2022-05-10 op t = gensub("### *", "", "1")
59 335917eb 2022-05-10 op printf("-%s-\n", t)
64 335917eb 2022-05-10 op t = gensub("## *", "", 1)
66 335917eb 2022-05-10 op print t | title2
72 335917eb 2022-05-10 op t = gensub("# *", "", 1)
74 335917eb 2022-05-10 op print t | title1
80 335917eb 2022-05-10 op print $0 | parq
86 335917eb 2022-05-10 op printf(" %s", $0) | pari
92 335917eb 2022-05-10 op print $0 | par