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