itttml-gopher - 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-gopher (1722B) 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 # format plain text markdown-style document into browsable gophermap Err bitreich.org 70 i 4 Err bitreich.org 70 i 5 # It recognises and convert the following patterns: Err bitreich.org 70 i 6 # Err bitreich.org 70 i 7 # [tag]: proto://host:port/path Err bitreich.org 70 i 8 # [tag]: proto://host/path Err bitreich.org 70 i 9 # [tag]: gopher://host:port/t/path Err bitreich.org 70 i 10 # [tag]: gopher://host/t/path Err bitreich.org 70 i 11 # [tag]: t/path Err bitreich.org 70 i 12 Err bitreich.org 70 i 13 BEGIN { Err bitreich.org 70 i 14 if (ARGC < 3 || 4 < ARGC) { Err bitreich.org 70 i 15 print("usage: tttml-gph []"); Err bitreich.org 70 i 16 exit(1); Err bitreich.org 70 i 17 } Err bitreich.org 70 i 18 HOST = ARGV[1]; Err bitreich.org 70 i 19 PORT = ARGV[2]; Err bitreich.org 70 i 20 ARGV[1] = ARGV[3]; Err bitreich.org 70 i 21 ARGC = 2; Err bitreich.org 70 i 22 } Err bitreich.org 70 i 23 Err bitreich.org 70 i 24 match($0, "^\\[[^]]*\\]: ") { Err bitreich.org 70 i 25 host = HOST; uri = substr($0, RLENGTH + 1); Err bitreich.org 70 i 26 port = PORT; tag = substr($0, 2, RLENGTH - 4); Err bitreich.org 70 i 27 path = uri; type = "0"; Err bitreich.org 70 i 28 Err bitreich.org 70 i 29 sub("^[ \t]*", "", uri); Err bitreich.org 70 i 30 Err bitreich.org 70 i 31 if (match(uri, "^[01789aghI]/")) { Err bitreich.org 70 i 32 type = substr(uri, 1, 1); Err bitreich.org 70 i 33 path = uri; sub(".", "", path); Err bitreich.org 70 i 34 Err bitreich.org 70 i 35 } else if (sub("^gopher://", "", uri)) { Err bitreich.org 70 i 36 host = uri; sub("/.*", "", host); Err bitreich.org 70 i 37 if (match(host, "[a-z.-]+:")) { Err bitreich.org 70 i 38 port = substr(host, RLENGTH + 1); Err bitreich.org 70 i 39 host = substr(host, RSTART, RLENGTH - 1); Err bitreich.org 70 i 40 } Err bitreich.org 70 i 41 Err bitreich.org 70 i 42 path = uri; sub(".*/", "/", path); Err bitreich.org 70 i 43 if (match(path, "^/./")) { Err bitreich.org 70 i 44 type = substr(path, 2, 1); Err bitreich.org 70 i 45 sub("^/./", "/", path); Err bitreich.org 70 i 46 } else if (match(path, "^/?$")) { Err bitreich.org 70 i 47 type = "1"; Err bitreich.org 70 i 48 } else { Err bitreich.org 70 i 49 type = "3"; Err bitreich.org 70 i 50 } Err bitreich.org 70 i 51 Err bitreich.org 70 i 52 } else if (match(uri, "^/")) { Err bitreich.org 70 i 53 path = uri; Err bitreich.org 70 i 54 type = sub("/$", "", uri) ? "1" : "0"; Err bitreich.org 70 i 55 Err bitreich.org 70 i 56 } else { Err bitreich.org 70 i 57 path = "URL:" uri; Err bitreich.org 70 i 58 type = "h"; host = ""; port = ""; Err bitreich.org 70 i 59 } Err bitreich.org 70 i 60 Err bitreich.org 70 i 61 for (name = ""; match($0, /[^ \t]/); name = name " " $0) Err bitreich.org 70 i 62 if (!getline) { end = 1; break; } Err bitreich.org 70 i 63 if (name == "" || name == " ") Err bitreich.org 70 i 64 name = " " uri; Err bitreich.org 70 i 65 Err bitreich.org 70 i 66 printf("%s%s:%s\t%s\t%s\t%s\n", type, tag, name, path, host, port); Err bitreich.org 70 i 67 Err bitreich.org 70 i 68 if (end) exit; Err bitreich.org 70 i 69 } Err bitreich.org 70 i 70 Err bitreich.org 70 i 71 /^###+ / { sub("##", ""); gsub("#", "•"); } Err bitreich.org 70 i 72 /^=+$/ { gsub("=", "━"); } Err bitreich.org 70 i 73 /^-+$/ { gsub("-", "─"); } Err bitreich.org 70 i 74 /^\t/ { sub("^\t", "│ "); } Err bitreich.org 70 i 75 Err bitreich.org 70 i 76 { Err bitreich.org 70 i 77 gsub("\t", " "); Err bitreich.org 70 i 78 printf("i%s\t\t\t\n", $0); Err bitreich.org 70 i 79 } Err bitreich.org 70 .