diff options
Diffstat (limited to 'typeset_gemini.awk')
-rw-r--r-- | typeset_gemini.awk | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/typeset_gemini.awk b/typeset_gemini.awk deleted file mode 100644 index eb5b7e1..0000000 --- a/typeset_gemini.awk +++ /dev/null | |||
@@ -1,122 +0,0 @@ | |||
1 | BEGIN { | ||
2 | pre = 0 | ||
3 | margin = margin ? margin : 4 | ||
4 | # Core lines | ||
5 | txs = "" # text style | ||
6 | lns = "\033[1m" # link number style | ||
7 | lus = "\033[36m" # link url style | ||
8 | lts = "\033[4m" # link text style | ||
9 | pfs = "" # preformatted style | ||
10 | # Advanced lines | ||
11 | h1s = "\033[1;4m" # h1 style | ||
12 | h2s = "\033[1m" # h2 style | ||
13 | h3s = "\033[3m" # h3 style | ||
14 | lis = "" # list item style | ||
15 | # Reset | ||
16 | res = "\033[0m" # reset style | ||
17 | } | ||
18 | /```/ { | ||
19 | pre = ! pre | ||
20 | next | ||
21 | } | ||
22 | pre { | ||
23 | mark = "```" | ||
24 | fmt = pfs "%s" res | ||
25 | text = $0 | ||
26 | } | ||
27 | /^#/ { | ||
28 | match($0, /#+/) | ||
29 | mark = substr($0, RSTART, RLENGTH) | ||
30 | sub(/#+[[:space:]]*/, "", $0) | ||
31 | level = length(mark) | ||
32 | if (level == 1) { | ||
33 | fmt = h1s "%s" res | ||
34 | } else if (level == 2) { | ||
35 | fmt = h2s "%s" res | ||
36 | } else { | ||
37 | fmt = h3s "%s" res | ||
38 | } | ||
39 | } | ||
40 | /^=>/ { | ||
41 | mark = "=>" | ||
42 | sub(/=>[[:space:]]*/, "", $0) | ||
43 | desc = $1 | ||
44 | text = "" | ||
45 | for (w = 2; w <= NF; w++) { | ||
46 | text = text (text ? " " : "") $w | ||
47 | } | ||
48 | fmt = lns "[" (++ln) "]" res " " lts "%s" res "\t" lus "%s" res | ||
49 | } | ||
50 | /^\*[[:space:]]/ { | ||
51 | mark = "*" | ||
52 | sub(/\*[[:space:]]*/, "", $0) | ||
53 | fmt = lis "%s" res | ||
54 | } | ||
55 | { | ||
56 | mark = mark ? mark : mark | ||
57 | fmt = fmt ? fmt : "%s" | ||
58 | text = text ? text : fold($0, " ") | ||
59 | desc = desc ? desc : "" | ||
60 | printf "%-" margin "s" fmt "\n", mark, text, desc | ||
61 | mark = fmt = text = desc = "" | ||
62 | } | ||
63 | function fold(str, sep, cols, out, cmd, i, j, len, chars, c, last, f, first) | ||
64 | { | ||
65 | if (! cols) { | ||
66 | # checks if stdout is a tty | ||
67 | if (system("test -t 1")) { | ||
68 | cols = 80 | ||
69 | } else { | ||
70 | cmd = "tput cols" | ||
71 | cmd | getline cols | ||
72 | close(cmd) | ||
73 | } | ||
74 | } | ||
75 | # squeeze tabs and newlines to spaces | ||
76 | gsub(/[\t\n]/, " ", str) | ||
77 | # if "sep" is empty, just fold on cols with substr | ||
78 | if (! length(sep)) { | ||
79 | len = length(str) | ||
80 | out = substr(str, 1, cols) | ||
81 | for (i = cols + 1; i <= len; i += cols) { | ||
82 | out = out "\n" | ||
83 | for (j = 1; j < margin; j++) { | ||
84 | out = out " " | ||
85 | } | ||
86 | out = out substr(str, i, cols) | ||
87 | } | ||
88 | return out | ||
89 | # otherwise, we have to loop over every character (can't split() on sep, it | ||
90 | # would destroy the existing separators) | ||
91 | } else { | ||
92 | # split string into char array | ||
93 | len = split(str, chars, "") | ||
94 | # set boolean, used to assign the first line differently | ||
95 | first = 1 | ||
96 | for (i = 1; i <= len; i += last) { | ||
97 | f = 0 | ||
98 | for (c = i + cols - 1; c >= i; c--) { | ||
99 | if (index(sep, chars[c])) { | ||
100 | last = c - i + 1 | ||
101 | f = 1 | ||
102 | break | ||
103 | } | ||
104 | } | ||
105 | if (! f) { | ||
106 | last = cols | ||
107 | } | ||
108 | if (first) { | ||
109 | out = substr(str, i, last) | ||
110 | first = 0 | ||
111 | } else { | ||
112 | out = out "\n" | ||
113 | for (j = 0; j < margin; j++) { | ||
114 | out = out " " | ||
115 | } | ||
116 | out = out substr(str, i, cols) | ||
117 | } | ||
118 | } | ||
119 | } | ||
120 | # return the output | ||
121 | return out | ||
122 | } | ||