tttml-fmt - tttml - converters for a simpler syntax than markdown | |
git clone git://bitreich.org/tttml git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
--- | |
tttml-fmt (2362B) | |
--- | |
1 #!/usr/bin/awk -f | |
2 | |
3 function fold(blk, first, prefix) | |
4 { | |
5 len = length(prefix); | |
6 gsub("\t", " ", blk); | |
7 gsub(" +", " ", blk); | |
8 sub("^ *", "", blk); sub(" *$", "", blk); | |
9 gsub("[.!?] ", "& ", blk); | |
10 | |
11 if (match(blk, /^[0-9.]+ /)) | |
12 blk = substr(blk, RMATCH, RLENGTH - 1) substr(blk, RLENG… | |
13 | |
14 for (p = first; (line = substr(blk, 1, 80 - len)) != ""; p = pre… | |
15 if (length(line) == 80 - len) | |
16 sub(" +[^ ]*$", "", line); | |
17 print(p line); | |
18 blk = substr(blk, length(line) + 1); | |
19 sub("^ *", "", blk); | |
20 } | |
21 } | |
22 | |
23 function tag(blk) | |
24 { | |
25 match(blk, /^\*[^*]*\*:/); | |
26 print(substr(blk, 1, RLENGTH)); | |
27 blk = substr(blk, RLENGTH + 1); | |
28 fold(blk, "", ""); | |
29 } | |
30 | |
31 function link(blk) | |
32 { | |
33 match(blk, /^\[[^]]*\]: [^ \t]*/) | |
34 print(substr(blk, 0, RLENGTH)); | |
35 fold(substr(blk, RLENGTH + 1), "", ""); | |
36 } | |
37 | |
38 function literal() | |
39 { | |
40 print(""); | |
41 do { | |
42 print($0); | |
43 } while (getline && match($0, /^\t/)); | |
44 } | |
45 | |
46 function title(blk) | |
47 { | |
48 fold(blk, "", ""); | |
49 half = "========================================"; | |
50 print(half half); | |
51 } | |
52 | |
53 function heading(blk) | |
54 { | |
55 print("\n"); | |
56 fold(blk, "", ""); | |
57 half = "----------------------------------------"; | |
58 print(half half); | |
59 } | |
60 | |
61 function subheading(str) | |
62 { | |
63 print("\n\n### " str); | |
64 } | |
65 | |
66 function printblk(blk) | |
67 { | |
68 if (blk) print(""); | |
69 | |
70 if (type == PARAGRAPH) fold(blk, "", ""); | |
71 else if (type == QUOTE) fold(blk, "> ", "> "); | |
72 else if (type == LIST) fold(blk, "- ", " "); | |
73 else if (type == TAG) tag(blk); | |
74 else if (type == LINK) link(blk); | |
75 } | |
76 | |
77 BEGIN { | |
78 PARAGRAPH = 1; QUOTE = 2; LIST = 3; TAG = 4; LINK = 5; | |
79 } | |
80 | |
81 # print the append line set type or … | |
82 # last block to current print the to… | |
83 # right now block or not current block … | |
84 | |
85 /^[ \t]*$/ { | |
86 printblk(blk); blk = $0; type = PARAGRAPH; … | |
87 } | |
88 | |
89 sub(/^[-*] /, "") { | |
90 printblk(blk); blk = $0; type = LIST; … | |
91 } | |
92 | |
93 /^\[[^]]*\]: / { | |
94 printblk(blk); blk = $0; type = LINK; … | |
95 } | |
96 | |
97 /^\*[^*]*\*:/ { | |
98 printblk(blk); blk = $0; type = TAG; … | |
99 } | |
100 | |
101 sub(/^> */, "") { | |
102 type = QUOTE; | |
103 } | |
104 | |
105 /^\t/ { | |
106 printblk(blk); blk = ""; literal(); … | |
107 } | |
108 | |
109 sub(/^# +/, "") { | |
110 printblk(blk); blk = ""; title($0); … | |
111 } | |
112 | |
113 sub(/^## +/, "") { | |
114 printblk(blk); blk = ""; heading($0); … | |
115 } | |
116 | |
117 sub(/^###+ */, "") { | |
118 printblk(blk); blk = ""; subheading($0); … | |
119 } | |
120 | |
121 /^=+$/ { | |
122 title(blk); blk = ""; next; | |
123 } | |
124 | |
125 /^-+$/ { | |
126 heading(blk); blk = ""; ne… | |
127 } | |
128 | |
129 { | |
130 blk = blk " " $0; | |
131 } | |
132 | |
133 END { | |
134 printblk(blk); | |
135 } |