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("
%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
.