iinitial import - 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
1commit 90cc0673d34514966f93faff6c62c79babc8faf0 /scm/tttml/commit/90cc0673d34514966f93faff6c62c79babc8faf0.gph bitreich.org 70
hAuthor: Josuah Demangeon <mail@josuah.net> URL:mailto:mail@josuah.net bitreich.org 70
iDate: Thu, 19 Apr 2018 02:04:43 +0200 Err bitreich.org 70
i Err bitreich.org 70
iinitial import Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i A markup-fmt | 136 +++++++++++++++++++++++++++++++ Err bitreich.org 70
i A markup-gopher | 62 +++++++++++++++++++++++++++++++ Err bitreich.org 70
i A markup-html | 145 +++++++++++++++++++++++++++++++ Err bitreich.org 70
i Err bitreich.org 70
i3 files changed, 343 insertions(+), 0 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/markup-fmt b/markup-fmt /scm/tttml/file/markup-fmt.gph bitreich.org 70
i@@ -0,0 +1,136 @@ Err bitreich.org 70
i+#!/usr/bin/awk -f Err bitreich.org 70
i+ Err bitreich.org 70
i+function fold(blk, first, prefix) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ len = length(prefix); Err bitreich.org 70
i+ gsub("\t", " ", blk); Err bitreich.org 70
i+ gsub(" +", " ", blk); Err bitreich.org 70
i+ gsub("\\*+", "*", blk); gsub("_+", "_", blk); gsub("/+", "/", blk); Err bitreich.org 70
i+ sub("^ *", "", blk); sub(" *$", "", blk); Err bitreich.org 70
i+ gsub("[.!?] ", "& ", blk); Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (match(blk, /^[0-9.]+ /)) Err bitreich.org 70
i+ blk = substr(blk, RMATCH, RLENGTH - 1) substr(blk, RLENGTH + 1); Err bitreich.org 70
i+ Err bitreich.org 70
i+ for (p = first; (line = substr(blk, 1, 80 - len)) != ""; p = prefix) { Err bitreich.org 70
i+ if (length(line) == 80 - len) Err bitreich.org 70
i+ sub(" +[^ ]*$", "", line); Err bitreich.org 70
i+ print(p line); Err bitreich.org 70
i+ blk = substr(blk, length(line) + 1); Err bitreich.org 70
i+ sub("^ *", "", blk); Err bitreich.org 70
i+ } Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function tag(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ match(blk, /^\*[^*]*\*:/); Err bitreich.org 70
i+ print(substr(blk, 1, RLENGTH)); Err bitreich.org 70
i+ blk = substr(blk, RLENGTH + 1); Err bitreich.org 70
i+ fold(blk, "", ""); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function link(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ match(blk, /^\[[^]]*\]: [^ \t]*/) Err bitreich.org 70
i+ print(substr(blk, 0, RLENGTH)); Err bitreich.org 70
i+ fold(substr(blk, RLENGTH + 1), "", ""); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function literal() Err bitreich.org 70
i+{ Err bitreich.org 70
i+ print(""); Err bitreich.org 70
i+ do { Err bitreich.org 70
i+ print($0); Err bitreich.org 70
i+ } while (getline && match($0, /^\t/)); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function title(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ fold(blk, "", ""); Err bitreich.org 70
i+ half = "========================================"; Err bitreich.org 70
i+ print(half half); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function heading(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ print("\n"); Err bitreich.org 70
i+ fold(blk, "", ""); Err bitreich.org 70
i+ half = "----------------------------------------"; Err bitreich.org 70
i+ print(half half); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function subheading(str) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ print("\n\n### " str); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function printblk(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ if (blk) print(""); Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (type == PARAGRAPH) fold(blk, "", ""); Err bitreich.org 70
i+ else if (type == QUOTE) fold(blk, "> ", "> "); Err bitreich.org 70
i+ else if (type == LIST) fold(blk, "- ", " "); Err bitreich.org 70
i+ else if (type == TAG) tag(blk); Err bitreich.org 70
i+ else if (type == LINK) link(blk); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+BEGIN { Err bitreich.org 70
i+ PARAGRAPH = 1; QUOTE = 2; LIST = 3; TAG = 4; LINK = 5; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+# print the append line set type or skip append Err bitreich.org 70
i+# last block to current print the to block Err bitreich.org 70
i+# right now block or not current block (see the end) Err bitreich.org 70
i+ Err bitreich.org 70
i+/^[ \t]*$/ { Err bitreich.org 70
i+ printblk(blk); blk = $0; type = PARAGRAPH; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+sub(/^[-*] /, "") { Err bitreich.org 70
i+ printblk(blk); blk = $0; type = LIST; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/^\[[^]]*\]: / { Err bitreich.org 70
i+ printblk(blk); blk = $0; type = LINK; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/^\*[^*]*\*:/ { Err bitreich.org 70
i+ printblk(blk); blk = $0; type = TAG; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+sub(/^> */, "") { Err bitreich.org 70
i+ type = QUOTE; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/^\t/ { Err bitreich.org 70
i+ printblk(blk); blk = ""; literal(); next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+sub(/^# +/, "") { Err bitreich.org 70
i+ printblk(blk); blk = ""; title($0); next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+sub(/^## +/, "") { Err bitreich.org 70
i+ printblk(blk); blk = ""; heading($0); next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+sub(/^###+ */, "") { Err bitreich.org 70
i+ printblk(blk); blk = ""; subheading($0); next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/^=+$/ { Err bitreich.org 70
i+ title(blk); blk = ""; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/^-+$/ { Err bitreich.org 70
i+ heading(blk); blk = ""; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+{ Err bitreich.org 70
i+ blk = blk " " $0; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+END { Err bitreich.org 70
i+ printblk(blk); Err bitreich.org 70
i+} Err bitreich.org 70
1diff --git a/markup-gopher b/markup-gopher /scm/tttml/file/markup-gopher.gph bitreich.org 70
i@@ -0,0 +1,62 @@ Err bitreich.org 70
i+#!/usr/bin/awk -f Err bitreich.org 70
i+ Err bitreich.org 70
i+# format plain text markdown-style document into browsable gophermap Err bitreich.org 70
i+ Err bitreich.org 70
i+# It recognises and convert the following patterns: Err bitreich.org 70
i+# Err bitreich.org 70
i+# [tag]: proto://host:port/path Err bitreich.org 70
i+# [tag]: proto://host/path Err bitreich.org 70
i+# [tag]: gopher://host:port/t/path Err bitreich.org 70
i+# [tag]: gopher://host/t/path Err bitreich.org 70
i+# [tag]: //host/t/path Err bitreich.org 70
i+# [tag]: /t/path Err bitreich.org 70
i+ Err bitreich.org 70
i+BEGIN { Err bitreich.org 70
i+ if (ARGC < 3 || 4 < ARGC) { Err bitreich.org 70
i+ print("usage: markup-gph <host> <port> [<file>]"); Err bitreich.org 70
i+ exit(1); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ HOST = ARGV[1]; Err bitreich.org 70
i+ PORT = ARGV[2]; Err bitreich.org 70
i+ ARGV[1] = ARGV[3]; Err bitreich.org 70
i+ ARGC = 2; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+match($0, "^\\[[^]]*\\]: ") { Err bitreich.org 70
i+ host = HOST; uri = substr($0, RLENGTH + 1); Err bitreich.org 70
i+ port = PORT; tag = substr($0, 2, RLENGTH - 4); Err bitreich.org 70
i+ path = uri; type = "0"; Err bitreich.org 70
i+ Err bitreich.org 70
i+ sub("^[ \t]*", "", path); Err bitreich.org 70
i+ if (match(path, "/$")) Err bitreich.org 70
i+ type = "1"; Err bitreich.org 70
i+ else if (match(path, "^[01789aghI]/")) { Err bitreich.org 70
i+ type = substr(path, 1, 1); Err bitreich.org 70
i+ sub(".", "", path); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (sub("^gopher://&;, "", uri)) { Err bitreich.org 70
i+ host = uri; sub("/.*", "", host); Err bitreich.org 70
i+ path = uri; sub(".*/", "/", path); Err bitreich.org 70
i+ if (match(host, "[a-z.-]+:")) { Err bitreich.org 70
i+ port = substr(host, RLENGTH + 1); Err bitreich.org 70
i+ host = substr(host, RSTART, RLENGTH - 1); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ } else if (match(uri, "^[a-z0-9-]+:")) { Err bitreich.org 70
i+ type = "h"; host = ""; port = ""; Err bitreich.org 70
i+ path = "URL:" uri; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ Err bitreich.org 70
i+ for (name = ""; match($0, /[^ \t]/); name = name " " $0) Err bitreich.org 70
i+ if (!getline) { end = 1; break; } Err bitreich.org 70
i+ if (name == "" || name == " ") name = " " uri; Err bitreich.org 70
i+ Err bitreich.org 70
i+ printf("%s%s:%s\t%s\t%s\t%s\n", type, tag, name, path, host, port); Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (end) exit; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+{ Err bitreich.org 70
i+ gsub("\t", " "); Err bitreich.org 70
i+ printf("i%s\t\t\t\n", $0); Err bitreich.org 70
i+} Err bitreich.org 70
1diff --git a/markup-html b/markup-html /scm/tttml/file/markup-html.gph bitreich.org 70
i@@ -0,0 +1,145 @@ Err bitreich.org 70
i+#!/usr/bin/awk -f Err bitreich.org 70
i+ Err bitreich.org 70
i+function esc(str) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ gsub("&", "\\&", str); Err bitreich.org 70
i+ gsub("<", "\\<", str); Err bitreich.org 70
i+ gsub(">", "\\>", str); Err bitreich.org 70
i+ gsub("\"", "\\"", str); Err bitreich.org 70
i+ return str; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function format(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ gsub("[*_]", "", blk); Err bitreich.org 70
i+ Err bitreich.org 70
i+ for (out = ""; match(blk, /\[[^]]+\]/);) { Err bitreich.org 70
i+ out = out substr(blk, 1, RSTART - 1); Err bitreich.org 70
i+ label = substr(blk, RSTART + 1, RLENGTH - 2); Err bitreich.org 70
i+ out = out sprintf("<sup>[<a href=\"#%s\">%s</a>]</sup>", label, label); Err bitreich.org 70
i+ blk = substr(blk, RSTART + RLENGTH); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ out = out blk; Err bitreich.org 70
i+ return out; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function paragraph(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ if (blk) Err bitreich.org 70
i+ print("<p>" format(esc(blk)) "</p>"); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function title(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ print("\n<h1>" esc(blk) "</h1>\n"); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function heading(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ print("\n<h2>" esc(blk) "</h2>\n"); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function subheading(str) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ print("\n<h3>" esc(str) "</h3>\n"); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function tag(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ print(""); Err bitreich.org 70
i+ match(blk, /^\*[^*]*\*:/); Err bitreich.org 70
i+ print("<dt>" esc(substr(blk, 1, RLENGTH)) "</dt>"); Err bitreich.org 70
i+ print("<dd>" esc(substr(blk, RLENGTH + 1)) "</dd>"); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function link(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ match(blk, /^\[[^]]*\]:/); Err bitreich.org 70
i+ label = esc(substr(blk, RSTART + 1, RLENGTH - 3)); Err bitreich.org 70
i+ blk = substr(blk, RLENGTH + 1); Err bitreich.org 70
i+ match(blk, /[^ \t]+/); Err bitreich.org 70
i+ printf("<p id=\"%s\">%s: <a href=\"%s\">%s</a></p>\n", Err bitreich.org 70
i+ esc(label), Err bitreich.org 70
i+ esc(label), Err bitreich.org 70
i+ esc(substr(blk, RSTART, RLENGTH + 1)), Err bitreich.org 70
i+ esc(substr(blk, RSTART + RLENGTH))); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function literal() Err bitreich.org 70
i+{ Err bitreich.org 70
i+ print("<pre>"); Err bitreich.org 70
i+ sub(/^\t/, "", $0); Err bitreich.org 70
i+ do { Err bitreich.org 70
i+ print(esc($0)); Err bitreich.org 70
i+ } while (getline && sub(/^\t/, "", $0)); Err bitreich.org 70
i+ print("</pre>"); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+function printblk(blk) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ if (type == PARAGRAPH) paragraph(blk); Err bitreich.org 70
i+ else if (type == QUOTE) quote(blk, "> ", "> "); Err bitreich.org 70
i+ else if (type == LIST) list(blk, "- ", " "); Err bitreich.org 70
i+ else if (type == TAG) tag(blk); Err bitreich.org 70
i+ else if (type == LINK) link(blk); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+BEGIN { Err bitreich.org 70
i+ PARAGRAPH = 1; QUOTE = 2; LIST = 3; TAG = 4; LINK = 5; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+# print the append line set type or skip append Err bitreich.org 70
i+# last block to current print the to block Err bitreich.org 70
i+# right now block or not current block (see the end) Err bitreich.org 70
i+ Err bitreich.org 70
i+/^[ \t]*$/ { Err bitreich.org 70
i+ printblk(blk); blk = $0; type = PARAGRAPH; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+sub(/^[-*] /, "") { Err bitreich.org 70
i+ printblk(blk); blk = $0; type = LIST; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/^\[[^]]*\]:/ { Err bitreich.org 70
i+ printblk(blk); blk = $0; type = LINK; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/^\*[^*]*\*:/ { Err bitreich.org 70
i+ printblk(blk); blk = $0; type = TAG; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+sub(/^> */, "") { Err bitreich.org 70
i+ type = QUOTE; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/^\t/ { Err bitreich.org 70
i+ printblk(blk); blk = ""; literal(); next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+sub(/^# +/, "") { Err bitreich.org 70
i+ printblk(blk); blk = ""; title($0); next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+sub(/^## +/, "") { Err bitreich.org 70
i+ printblk(blk); blk = ""; heading($0); next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+sub(/^###+ */, "") { Err bitreich.org 70
i+ printblk(blk); blk = ""; subheading($0); next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/^=+$/ { Err bitreich.org 70
i+ title(blk); blk = ""; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+/^-+$/ { Err bitreich.org 70
i+ heading(blk); blk = ""; next; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+{ Err bitreich.org 70
i+ blk = blk " " $0; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+END { Err bitreich.org 70
i+ printblk(blk); Err bitreich.org 70
i+} Err bitreich.org 70
.
Response:
text/plain