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 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 []"); 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("[%s]", 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("

" format(esc(blk)) "

"); 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

" esc(blk) "

\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

" esc(blk) "

\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

" esc(str) "

\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("
" esc(substr(blk, 1, RLENGTH)) "
"); Err bitreich.org 70 i+ print("
" esc(substr(blk, RLENGTH + 1)) "
"); 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("

%s: %s

\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("
");	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("
"); 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 .