tttml

tools for formatting a very basic markdown-like format
Log | Files | Refs | README

commit 83b0368ca37208587a5abadefd12628d80374ab4
parent fd08ceaed88288f846c89bbb7b191379064625ee
Author: Josuah Demangeon <mail@josuah.net>
Date:   Fri, 11 May 2018 19:57:26 +0200

improve tttml-html qualityness and replace markup->tttml again

In awk, even if a match() happen in an external funciton, it sets
RLENGTH an friends, so these variables needs to be saved before
calling other functions.

	match(string, /patttttern/);
	match_inside™();
	substr(string, 1, RLENGTH);

becomes:

	match(string, /patttttern/);
	len = RLENGTH;
	match_inside™();
	substr(string, 1, len);

Diffstat:
MMakefile | 2+-
MREADME | 56++++++++++++++++++++++++++++----------------------------
Mtttml-gopher | 2+-
Mtttml-html | 24+++++++++++++++++++-----
Mtttml.5 | 10+++++-----
5 files changed, 54 insertions(+), 40 deletions(-)

diff --git a/Makefile b/Makefile @@ -5,7 +5,7 @@ MAN5 = tttml.5 all: README: Makefile $(MAN1) $(MAN5) - mandoc -T utf8 $(MAN5) $(MAN1) | col -bx >$@ + mandoc -T ascii $(MAN5) $(MAN1) | col -bx >$@ install: mkdir -p $(PREFIX)/bin diff --git a/README b/README @@ -1,14 +1,14 @@ -MARKUP(5) File Formats Manual MARKUP(5) +TTTML(5) File Formats Manual TTTML(5) NAME - markup simpler markup syntax than markdown + tttml - simpler markup syntax than markdown SYNOPSIS - markup.md + file.md DESCRIPTION - The markup format is a very simple format for writiing text that look - good enough to be published without conversion. It lacks the markdown + The tttml format is a very simple format for writiing text that look good + enough to be published without conversion. It lacks the markdown recursive syntax (such as recursive lists anb quotes) which also remove markdown ambiguities. Each block of text is separated from anotherone by an empty line. @@ -20,22 +20,22 @@ DESCRIPTION Second paragraph of text. - title Block that ends by a line with only =: + title Block that ends by a line with only `=': Title can therefore have multiple lines if required although it is not advised. ====================================================== heading - Block that ends with a line with only -: + Block that ends with a line with only `-': Heading can also have multiple lines ------------------------------------------------------ subheading - Block with a single line with at least 3 leading # characters + Block with a single line with at least 3 leading `#' characters starting at subheading and going down the outline (subheading, - subsubheading ...) every time an additionnal # is added: + subsubheading ...) every time an additionnal `#' is added: ### Subheading @@ -56,7 +56,7 @@ DESCRIPTION - Note that multi-paragraph lists are not handled - quote Block that has a leading > on every line: + quote Block that has a leading `>' on every line: > Mail-style quoting. Note that nested quotes > are not handled. @@ -71,14 +71,14 @@ DESCRIPTION link Block that start with a label line and eventual subsequent description lines: - [label]: git://josuah.net/git/markup.git - git repository for the markup set of tools + [label]: git://josuah.net/git/tttml + git repository for the tttml set of tools [label2]: /url/without/description.txt SEE ALSO smu(1), simple markup - markdown like syntax: - https://github.com/Gottox/smu + https://github.com/Gottox/smu AUTHORS Josuah Demangeon <mail@josuah.net> @@ -90,7 +90,7 @@ OpenBSD 6.3 April 19, 2018 OpenBSD 6.3 TTTML-FMT(1) General Commands Manual TTTML-FMT(1) NAME - tttml-fmt format/pretty-print a tttml file + tttml-fmt - format/pretty-print a tttml file SYNOPSIS tttml-fmt [file...] @@ -102,22 +102,22 @@ DESCRIPTION Most markdown documents can be converted to tttml(5) with if they do not have recursive elents such as nested lists or nested quotes. - The paragraphs are being filled to 80 columns, + o The paragraphs are being filled to 80 columns, - The empty lines are set as apropriate + o The empty lines are set as apropriate - The blocks merged together are separated, such as lists without + o The blocks merged together are separated, such as lists without separating blank spaces. - The title and heading horizontal lines are expanded to 80 + o The title and heading horizontal lines are expanded to 80 columns. - The tags with the tagline merged with the paragraph are separated + o The tags with the tagline merged with the paragraph are separated on their own line. SEE ALSO tttml-gopher(1), smu(1), tttml(5), simple tttml - markdown like syntax: - https://github.com/Gottox/smu + https://github.com/Gottox/smu AUTHORS Josuah Demangeon <mail@josuah.net> @@ -129,7 +129,7 @@ OpenBSD 6.3 April 19, 2018 OpenBSD 6.3 TTTML-GOPHER(1) General Commands Manual TTTML-GOPHER(1) NAME - tttml-gopher generate a gophermap from a tttml file + tttml-gopher - generate a gophermap from a tttml file SYNOPSIS tttml-gopher host port [file...] @@ -140,17 +140,17 @@ DESCRIPTION rest. host and port is used to set the host in links that do not have a host, such as /path/to/file.txt - All URI starting with a / and ending with a / are printed - using the 1 entry type + o All URI starting with a `/' and ending with a `/' are printed + using the `1' entry type - All URI starting with a / and not ending with a / are printed - using the 0 + o All URI starting with a `/' and not ending with a `/' are printed + using the `0' - All URI starting with 0, 1, 7, 8, 9, a, g, h or - I followed by a / and all gopher:// URI are printed using + o All URI starting with `0', `1', `7', `8', `9', `a', `g', `h' or + `I' followed by a `/' and all "gopher://" URI are printed using the corresponding entry type. - All other URI are printed using the h entry type + o All other URI are printed using the `h' entry type AUTHORS Josuah Demangeon <mail@josuah.net> diff --git a/tttml-gopher b/tttml-gopher @@ -13,7 +13,7 @@ BEGIN { if (ARGC < 3 || 4 < ARGC) { - print("usage: markup-gph <host> <port> [<file>]"); + print("usage: tttml-gph <host> <port> [<file>]"); exit(1); } HOST = ARGV[1]; diff --git a/tttml-html b/tttml-html @@ -6,12 +6,13 @@ function esc(str) gsub("<", "\\&lt;", str); gsub(">", "\\&gt;", str); gsub("\"", "\\&quot;", str); + gsub("'", "\\&apos;", str); return str; } function format(blk) { - gsub("[*_]", "", blk); + gsub("[*_/]", "", blk); for (out = ""; match(blk, /\[[^]]+\]/);) { out = out substr(blk, 1, RSTART - 1); @@ -29,6 +30,18 @@ function paragraph(blk) print("<p>" format(esc(blk)) "</p>"); } +function blockquote(blk) +{ + if (blk) + print("<blockquote>" format(esc(blk)) "</blockquote>"); +} + +function list(blk) +{ + if (blk) + print("<ul><li>" format(esc(blk)) "</li></ul>"); +} + function title(blk) { print("\n<h1>" esc(blk) "</h1>\n"); @@ -48,8 +61,9 @@ function tag(blk) { print(""); match(blk, /^\*[^*]*\*:/); - print("<dt>" esc(substr(blk, 1, RLENGTH)) "</dt>"); - print("<dd>" esc(substr(blk, RLENGTH + 1)) "</dd>"); + len = RLENGTH; + print("<dt>" format(esc(substr(blk, 1, len - 2))) "</dt>"); + print("<dd>" format(esc(substr(blk, len + 2))) "</dd>"); } function link(blk) @@ -78,8 +92,8 @@ function literal() function printblk(blk) { if (type == PARAGRAPH) paragraph(blk); - else if (type == QUOTE) quote(blk, "> ", "> "); - else if (type == LIST) list(blk, "- ", " "); + else if (type == QUOTE) blockquote(blk); + else if (type == LIST) list(blk); else if (type == TAG) tag(blk); else if (type == LINK) link(blk); } diff --git a/tttml.5 b/tttml.5 @@ -1,17 +1,17 @@ .Dd $Mdocdate: April 19 2018$ -.Dt MARKUP 5 +.Dt TTTML 5 .Os . . .Sh NAME . -.Nm markup +.Nm tttml .Nd simpler markup syntax than markdown . . .Sh SYNOPSIS . -.Pa markup.md +.Pa file.md . . .Sh DESCRIPTION @@ -115,8 +115,8 @@ Block that start with a label line and eventual subsequent description lines: . .Bd -literal -offset 3n -[label]: git://josuah.net/git/markup.git -git repository for the markup set of tools +[label]: git://josuah.net/git/tttml +git repository for the tttml set of tools [label2]: /url/without/description.txt .Ed