ibasic fmt program using fmtc - 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 dfd29d4237158b9699334bbab6d22e4285e4a8a4 /scm/tttml/commit/dfd29d4237158b9699334bbab6d22e4285e4a8a4.gph bitreich.org 70 1parent b9898661168d039dc96cb69c093089fde465cbbe /scm/tttml/commit/b9898661168d039dc96cb69c093089fde465cbbe.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:mail@josuah.net bitreich.org 70 iDate: Thu, 31 May 2018 23:36:36 +0200 Err bitreich.org 70 i Err bitreich.org 70 ibasic fmt program using fmtc Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i A a.out | 0 Err bitreich.org 70 i A a.out.core | 0 Err bitreich.org 70 i A t | 70 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i M tttml-gopher.1 | 27 +++++++++++++++++++-------- Err bitreich.org 70 i A tttml.c | 73 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i Err bitreich.org 70 i5 files changed, 162 insertions(+), 8 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/a.out b/a.out /scm/tttml/file/a.out.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/a.out.core b/a.out.core /scm/tttml/file/a.out.core.gph bitreich.org 70 iBinary files differ. Err bitreich.org 70 1diff --git a/t b/t /scm/tttml/file/t.gph bitreich.org 70 i@@ -0,0 +1,69 @@ Err bitreich.org 70 i+ TTTML(5) File Formats Manual TTTML(5) Err bitreich.org 70 i+ NAME tttml - simpler markup syntax than markdown SYNOPSIS file.md Err bitreich.org 70 i+ DESCRIPTION The tttml format is a very simple format for writiing text Err bitreich.org 70 i+ that look good enough to be published without conversion. It lacks the Err bitreich.org 70 i+ markdown recursive syntax (such as recursive lists anb quotes) which Err bitreich.org 70 i+ also remove markdown ambiguities. Each block of text is separated from Err bitreich.org 70 i+ anotherone by an empty line. paragraph Any Err bitreich.org 70 i+ non-special block of text: First paragraph of text. Err bitreich.org 70 i+ Second paragraph of text. title Block that ends by a line with only Err bitreich.org 70 i+ `=': Title can therefore have multiple lines if required Err bitreich.org 70 i+ although it is not advised. Err bitreich.org 70 i+ ====================================================== heading Err bitreich.org 70 i+ Block that ends with a line with only `-': Heading can also Err bitreich.org 70 i+ have multiple lines Err bitreich.org 70 i+ ------------------------------------------------------ subheading Err bitreich.org 70 i+ Block with a single line with at least 3 leading `#' characters Err bitreich.org 70 i+ starting at subheading and going down the outline (subheading, Err bitreich.org 70 i+ subsubheading ...) every time an additionnal `#' is added: Err bitreich.org 70 i+ ### Subheading #### Subsubheading ##### Err bitreich.org 70 i+ Subsubsubheading tag Block that start with a tag line: Err bitreich.org 70 i+ *tagline with asterisks and a column*: Body of the tag block Err bitreich.org 70 i+ that can span over multiple lines like regular paragraphs. Err bitreich.org 70 i+ list Block that start with a dash: - List item. The Err bitreich.org 70 i+ following lines might not have leading space. Err bitreich.org 70 i+ - Note that multi-paragraph lists are not handled quote Block that Err bitreich.org 70 i+ has a leading `>' on every line: > Mail-style quoting. Note Err bitreich.org 70 i+ that nested quotes > are not handled. literal Err bitreich.org 70 i+ Block that has a leading tab on every line: Nothing Err bitreich.org 70 i+ gets interpreted in these blocks. They get printed Err bitreich.org 70 i+ as-is. They may contain extra tabs. Err bitreich.org 70 i+ link Block that start with a label line and eventual subsequent Err bitreich.org 70 i+ description lines: [label]: git://josuah.net/git/tttml Err bitreich.org 70 i+ git repository for the tttml set of tools [label2]: Err bitreich.org 70 i+ /url/without/description.txt SEE ALSO smu(1), simple markup - markdown Err bitreich.org 70 i+ like syntax: https://github.com/Gottox/smu AUTHORS Josuah Err bitreich.org 70 i+ Demangeon OpenBSD 6.3 April 19, 2018 Err bitreich.org 70 i+ OpenBSD 6.3 Err bitreich.org 70 i+ ------------------------------------------------------------------------------ Err bitreich.org 70 i+ TTTML-FMT(1) General Commands Manual Err bitreich.org 70 i+ TTTML-FMT(1) NAME tttml-fmt - format/pretty-print a tttml file Err bitreich.org 70 i+ SYNOPSIS tttml-fmt [file...] DESCRIPTION The tttml-fmt utility Err bitreich.org 70 i+ reformat a tttml(5) and print valid format to stdout. Most Err bitreich.org 70 i+ markdown documents can be converted to tttml(5) with if they do not have Err bitreich.org 70 i+ recursive elents such as nested lists or nested quotes. o The Err bitreich.org 70 i+ paragraphs are being filled to 80 columns, o The empty lines are Err bitreich.org 70 i+ set as apropriate o The blocks merged together are separated, Err bitreich.org 70 i+ such as lists without separating blank spaces. o The Err bitreich.org 70 i+ title and heading horizontal lines are expanded to 80 columns. Err bitreich.org 70 i+ o The tags with the tagline merged with the paragraph are separated Err bitreich.org 70 i+ on their own line. SEE ALSO tttml-gopher(1), smu(1), tttml(5), simple Err bitreich.org 70 i+ tttml - markdown like syntax: https://github.com/Gottox/smu AUTHORS Err bitreich.org 70 i+ Josuah Demangeon OpenBSD 6.3 April 19, Err bitreich.org 70 i+ 2018 OpenBSD 6.3 Err bitreich.org 70 i+ ------------------------------------------------------------------------------ Err bitreich.org 70 i+ TTTML-GOPHER(1) General Commands Manual Err bitreich.org 70 i+ TTTML-GOPHER(1) NAME tttml-gopher - generate a gophermap from a tttml Err bitreich.org 70 i+ file SYNOPSIS tttml-gopher host port [file...] DESCRIPTION The Err bitreich.org 70 i+ tttml-gopher utility convert file to a gophermap format, simply by Err bitreich.org 70 i+ converting all link entries, converting tabs into spaces and printing the Err bitreich.org 70 i+ rest. host and port is used to set the host in links that do not have a Err bitreich.org 70 i+ host, such as /path/to/file.txt o All URI starting with a `/' and Err bitreich.org 70 i+ ending with a `/' are printed using the `1' entry type o Err bitreich.org 70 i+ All URI starting with a `/' and not ending with a `/' are printed Err bitreich.org 70 i+ using the `0' o All URI starting with `0', `1', `7', `8', `9', Err bitreich.org 70 i+ `a', `g', `h' or `I' followed by a `/' and all "gopher://" URI Err bitreich.org 70 i+ are printed using the corresponding entry type. o Err bitreich.org 70 i+ All other URI are printed using the `h' entry type AUTHORS Josuah Err bitreich.org 70 i+ Demangeon OpenBSD 6.3 April 19, 2018 Err bitreich.org 70 i+ OpenBSD 6.3 Err bitreich.org 70 i+\ No newline at end of file Err bitreich.org 70 1diff --git a/tttml-gopher.1 b/tttml-gopher.1 /scm/tttml/file/tttml-gopher.1.gph bitreich.org 70 i@@ -90,17 +90,28 @@ entry type Err bitreich.org 70 i .\" For sections 1, 4, 6, 7, 8, and 9 printf/stderr messages only. Err bitreich.org 70 i .\" .Sh ERRORS Err bitreich.org 70 i .\" For sections 2, 3, 4, and 9 errno settings only. Err bitreich.org 70 i-.\" .Sh SEE ALSO Err bitreich.org 70 i-.\" .Xr foobar 1 Err bitreich.org 70 i-.\" .Sh STANDARDS Err bitreich.org 70 i-.\" .Sh HISTORY Err bitreich.org 70 i+. Err bitreich.org 70 i+. Err bitreich.org 70 i+.Sh SEE ALSO Err bitreich.org 70 i+. Err bitreich.org 70 i+.Xr tttml-fmt 1 Err bitreich.org 70 i+. Err bitreich.org 70 i+.Sh STANDARDS Err bitreich.org 70 i+. Err bitreich.org 70 i+.Rs Err bitreich.org 70 i+.%A Anklesari Err bitreich.org 70 i+.%A McCahill Err bitreich.org 70 i+.%A Lindner Err bitreich.org 70 i+.%A Johnson Err bitreich.org 70 i+.%A Torrey Err bitreich.org 70 i+.%A Alberti Err bitreich.org 70 i+.%D March 1993 Err bitreich.org 70 i+.%T The Internet Gopher Protocol Err bitreich.org 70 i+.%R RFC 1436 Err bitreich.org 70 i+.Re Err bitreich.org 70 i . Err bitreich.org 70 i . Err bitreich.org 70 i .Sh AUTHORS Err bitreich.org 70 i . Err bitreich.org 70 i .An Josuah Demangeon Err bitreich.org 70 i .Aq Mt mail@josuah.net Err bitreich.org 70 i-. Err bitreich.org 70 i-. Err bitreich.org 70 i-.\" .Sh CAVEATS Err bitreich.org 70 i-.\" .Sh BUGS Err bitreich.org 70 1diff --git a/tttml.c b/tttml.c /scm/tttml/file/tttml.c.gph bitreich.org 70 i@@ -0,0 +1,73 @@ Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i+ Err bitreich.org 70 i+#define WORD_MAX 1024 Err bitreich.org 70 i+#define MIN(x, y) ((x) < (y) ? (x) : (y)) Err bitreich.org 70 i+ Err bitreich.org 70 i+/* Err bitreich.org 70 i+ * Put the character c to stdout, and if the line is too long, insert Err bitreich.org 70 i+ * a newline. If c == EOF, flush the last word out of fmtc's static Err bitreich.org 70 i+ * buffer. Err bitreich.org 70 i+ * Err bitreich.org 70 i+ * It preserve the double space after a punctuation mark [.!?] if any. Err bitreich.org 70 i+ */ Err bitreich.org 70 i+int Err bitreich.org 70 i+fmtc(char c, char *prefix, int max) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ static int pos = 0, nspaces = 0, wlen = 0, was_space = 1, was_punct = 0, first = 1; Err bitreich.org 70 i+ static char word[WORD_MAX], *w = word; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (c != ' ' && c != '\n' && c != EOF) { Err bitreich.org 70 i+ if (wlen + 1 < WORD_MAX) { Err bitreich.org 70 i+ *w++ = c; Err bitreich.org 70 i+ wlen++; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ was_space = 0; Err bitreich.org 70 i+ was_punct = !!strchr(".!?", c); Err bitreich.org 70 i+ Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ if (!was_space) { Err bitreich.org 70 i+ was_space = 1; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (pos + nspaces + wlen > max) { Err bitreich.org 70 i+ pos = strlen(prefix); Err bitreich.org 70 i+ fputc('\n', stdout); Err bitreich.org 70 i+ fputs(prefix, stdout); Err bitreich.org 70 i+ } else if (!first) { Err bitreich.org 70 i+ pos += nspaces; Err bitreich.org 70 i+ while (nspaces-- > 0) Err bitreich.org 70 i+ fputc(' ', stdout); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ pos += wlen; Err bitreich.org 70 i+ word[wlen] = '\0'; Err bitreich.org 70 i+ fputs(word, stdout); Err bitreich.org 70 i+ Err bitreich.org 70 i+ w = word; Err bitreich.org 70 i+ wlen = 0; Err bitreich.org 70 i+ nspaces = 1; Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ nspaces = was_punct ? 2 : 1; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (c == EOF) Err bitreich.org 70 i+ fputc('\n', stdout); Err bitreich.org 70 i+ Err bitreich.org 70 i+ first = 0; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ return c; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+int Err bitreich.org 70 i+main(void) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ int c; Err bitreich.org 70 i+ char *prefix; Err bitreich.org 70 i+ Err bitreich.org 70 i+ prefix = " |"; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fputs(prefix, stdout); Err bitreich.org 70 i+ while (fmtc(fgetc(stdin), prefix, 80) != EOF); Err bitreich.org 70 i+} Err bitreich.org 70 .