itttml-html - tttml - converters for a simpler syntax than markdown Err bitreich.org 70 hgit clone git://bitreich.org/tttml git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/tttml URL:git://bitreich.org/tttml git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/tttml bitreich.org 70 1Log /scm/tttml/log.gph bitreich.org 70 1Files /scm/tttml/files.gph bitreich.org 70 1Refs /scm/tttml/refs.gph bitreich.org 70 1Tags /scm/tttml/tag bitreich.org 70 1README /scm/tttml/file/README.gph bitreich.org 70 i--- Err bitreich.org 70 itttml-html (2784B) Err bitreich.org 70 i--- Err bitreich.org 70 i 1 #!/usr/bin/awk -f Err bitreich.org 70 i 2 Err bitreich.org 70 i 3 function esc(str) Err bitreich.org 70 i 4 { Err bitreich.org 70 i 5 gsub("&", "\\&", str); Err bitreich.org 70 i 6 gsub("<", "\\<", str); Err bitreich.org 70 i 7 gsub(">", "\\>", str); Err bitreich.org 70 i 8 gsub("\"", "\\"", str); Err bitreich.org 70 i 9 gsub("'", "\\'", str); Err bitreich.org 70 i 10 return str; Err bitreich.org 70 i 11 } Err bitreich.org 70 i 12 Err bitreich.org 70 i 13 function format(blk) Err bitreich.org 70 i 14 { Err bitreich.org 70 i 15 gsub("[*_/]", "", blk); Err bitreich.org 70 i 16 Err bitreich.org 70 i 17 for (out = ""; match(blk, /\[[^]]+\]/);) { Err bitreich.org 70 i 18 out = out substr(blk, 1, RSTART - 1); Err bitreich.org 70 i 19 label = substr(blk, RSTART + 1, RLENGTH - 2); Err bitreich.org 70 i 20 out = out sprintf("[%s]", label, label); Err bitreich.org 70 i 21 blk = substr(blk, RSTART + RLENGTH); Err bitreich.org 70 i 22 } Err bitreich.org 70 i 23 out = out blk; Err bitreich.org 70 i 24 return out; Err bitreich.org 70 i 25 } Err bitreich.org 70 i 26 Err bitreich.org 70 i 27 function paragraph(blk) Err bitreich.org 70 i 28 { Err bitreich.org 70 i 29 if (blk) Err bitreich.org 70 i 30 print("

" format(esc(blk)) "

"); Err bitreich.org 70 i 31 } Err bitreich.org 70 i 32 Err bitreich.org 70 i 33 function blockquote(blk) Err bitreich.org 70 i 34 { Err bitreich.org 70 i 35 if (blk) Err bitreich.org 70 i 36 print("
" format(esc(blk)) "
"); Err bitreich.org 70 i 37 } Err bitreich.org 70 i 38 Err bitreich.org 70 i 39 function list(blk) Err bitreich.org 70 i 40 { Err bitreich.org 70 i 41 if (blk) Err bitreich.org 70 i 42 print(""); Err bitreich.org 70 i 43 } Err bitreich.org 70 i 44 Err bitreich.org 70 i 45 function title(blk) Err bitreich.org 70 i 46 { Err bitreich.org 70 i 47 print("\n

" esc(blk) "

\n"); Err bitreich.org 70 i 48 } Err bitreich.org 70 i 49 Err bitreich.org 70 i 50 function heading(blk) Err bitreich.org 70 i 51 { Err bitreich.org 70 i 52 print("\n

" esc(blk) "

\n"); Err bitreich.org 70 i 53 } Err bitreich.org 70 i 54 Err bitreich.org 70 i 55 function subheading(str) Err bitreich.org 70 i 56 { Err bitreich.org 70 i 57 print("\n

" esc(str) "

\n"); Err bitreich.org 70 i 58 } Err bitreich.org 70 i 59 Err bitreich.org 70 i 60 function tag(blk) Err bitreich.org 70 i 61 { Err bitreich.org 70 i 62 print(""); Err bitreich.org 70 i 63 match(blk, /^\*[^*]*\*:/); Err bitreich.org 70 i 64 len = RLENGTH; Err bitreich.org 70 i 65 print("
" format(esc(substr(blk, 1, len - 2))) "
"); Err bitreich.org 70 i 66 print("
" format(esc(substr(blk, len + 2))) "
"); Err bitreich.org 70 i 67 } Err bitreich.org 70 i 68 Err bitreich.org 70 i 69 function link(blk) Err bitreich.org 70 i 70 { Err bitreich.org 70 i 71 match(blk, /^\[[^]]*\]:/); Err bitreich.org 70 i 72 label = esc(substr(blk, RSTART + 1, RLENGTH - 3)); Err bitreich.org 70 i 73 blk = substr(blk, RLENGTH + 1); Err bitreich.org 70 i 74 match(blk, /[^ \t]+/); Err bitreich.org 70 i 75 printf("

%s: %s

\n", Err bitreich.org 70 i 76 esc(label), Err bitreich.org 70 i 77 esc(label), Err bitreich.org 70 i 78 esc(substr(blk, RSTART, RLENGTH + 1)), Err bitreich.org 70 i 79 esc(substr(blk, RSTART + RLENGTH))); Err bitreich.org 70 i 80 } Err bitreich.org 70 i 81 Err bitreich.org 70 i 82 function literal() Err bitreich.org 70 i 83 { Err bitreich.org 70 i 84 print("
");	Err	bitreich.org	70
i    85         sub(/^\t/, "", $0);	Err	bitreich.org	70
i    86         do {	Err	bitreich.org	70
i    87                 print(esc($0));	Err	bitreich.org	70
i    88         } while (getline && sub(/^\t/, "", $0));	Err	bitreich.org	70
i    89         print("
"); Err bitreich.org 70 i 90 } Err bitreich.org 70 i 91 Err bitreich.org 70 i 92 function printblk(blk) Err bitreich.org 70 i 93 { Err bitreich.org 70 i 94 if (type == PARAGRAPH) paragraph(blk); Err bitreich.org 70 i 95 else if (type == QUOTE) blockquote(blk); Err bitreich.org 70 i 96 else if (type == LIST) list(blk); Err bitreich.org 70 i 97 else if (type == TAG) tag(blk); Err bitreich.org 70 i 98 else if (type == LINK) link(blk); Err bitreich.org 70 i 99 } Err bitreich.org 70 i 100 Err bitreich.org 70 i 101 BEGIN { Err bitreich.org 70 i 102 PARAGRAPH = 1; QUOTE = 2; LIST = 3; TAG = 4; LINK = 5; Err bitreich.org 70 i 103 } Err bitreich.org 70 i 104 Err bitreich.org 70 i 105 # print the append line set type or skip append Err bitreich.org 70 i 106 # last block to current print the to block Err bitreich.org 70 i 107 # right now block or not current block (see the end) Err bitreich.org 70 i 108 Err bitreich.org 70 i 109 /^[ \t]*$/ { Err bitreich.org 70 i 110 printblk(blk); blk = $0; type = PARAGRAPH; next; Err bitreich.org 70 i 111 } Err bitreich.org 70 i 112 Err bitreich.org 70 i 113 sub(/^[-*] /, "") { Err bitreich.org 70 i 114 printblk(blk); blk = $0; type = LIST; next; Err bitreich.org 70 i 115 } Err bitreich.org 70 i 116 Err bitreich.org 70 i 117 /^\[[^]]*\]:/ { Err bitreich.org 70 i 118 printblk(blk); blk = $0; type = LINK; next; Err bitreich.org 70 i 119 } Err bitreich.org 70 i 120 Err bitreich.org 70 i 121 /^\*[^*]*\*:/ { Err bitreich.org 70 i 122 printblk(blk); blk = $0; type = TAG; next; Err bitreich.org 70 i 123 } Err bitreich.org 70 i 124 Err bitreich.org 70 i 125 sub(/^> */, "") { Err bitreich.org 70 i 126 type = QUOTE; Err bitreich.org 70 i 127 } Err bitreich.org 70 i 128 Err bitreich.org 70 i 129 /^\t/ { Err bitreich.org 70 i 130 printblk(blk); blk = ""; literal(); next; Err bitreich.org 70 i 131 } Err bitreich.org 70 i 132 Err bitreich.org 70 i 133 sub(/^# +/, "") { Err bitreich.org 70 i 134 printblk(blk); blk = ""; title($0); next; Err bitreich.org 70 i 135 } Err bitreich.org 70 i 136 Err bitreich.org 70 i 137 sub(/^## +/, "") { Err bitreich.org 70 i 138 printblk(blk); blk = ""; heading($0); next; Err bitreich.org 70 i 139 } Err bitreich.org 70 i 140 Err bitreich.org 70 i 141 sub(/^###+ */, "") { Err bitreich.org 70 i 142 printblk(blk); blk = ""; subheading($0); next; Err bitreich.org 70 i 143 } Err bitreich.org 70 i 144 Err bitreich.org 70 i 145 /^=+$/ { Err bitreich.org 70 i 146 title(blk); blk = ""; next; Err bitreich.org 70 i 147 } Err bitreich.org 70 i 148 Err bitreich.org 70 i 149 /^-+$/ { Err bitreich.org 70 i 150 heading(blk); blk = ""; next; Err bitreich.org 70 i 151 } Err bitreich.org 70 i 152 Err bitreich.org 70 i 153 { Err bitreich.org 70 i 154 blk = blk " " $0; Err bitreich.org 70 i 155 } Err bitreich.org 70 i 156 Err bitreich.org 70 i 157 END { Err bitreich.org 70 i 158 printblk(blk); Err bitreich.org 70 i 159 } Err bitreich.org 70 .