Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <v7n2q7$t5nr$1@dont-email.me>
Deutsch   English   Français   Italiano  
<v7n2q7$t5nr$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: sean@conman.org
Newsgroups: comp.infosystems.gemini
Subject: Re: Tables in Gemini
Date: Tue, 23 Jul 2024 01:59:35 -0000 (UTC)
Organization: Conman Laboratories
Lines: 85
Sender: Sean Conner <spc@lucy.roswell.conman.org>
Message-ID: <v7n2q7$t5nr$1@dont-email.me>
References: <v7e2j2$31q1g$1@dont-email.me>
Reply-To: sean@conman.org
Injection-Date: Tue, 23 Jul 2024 03:59:36 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="7300523a89dc84ff3113000b79225f72";
	logging-data="956155"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/8X+FY2sw9jZXXoMuIvfOU"
User-Agent: tin/2.4.0-20160823 ("Octomore") (UNIX) (Linux/2.6.9-100.EL.plus.c4smp (i686))
Cancel-Lock: sha1:gllpt3WOc4DrwwCdmS/24zPbje8=
Bytes: 4423

It was thus said that the Great Namno <wed3009@yandex.ru> once stated:
> Greetings. I think that gemtext would benefit from inclusion of tables 
> that are not ad-hoc constructs of pseudographics. I have written a blog 
> post (gemini://namno.duckdns.org/blog/2024-06-09.gmi) on how I would like 
> tables to be implemented in gemini, but I think it would be great if other 
> people gave some critique on my reasoning and markup.

  You expect people to hand format such a table?

  Here's an entry of mine with several tables:

	gemini://gemini.conman.org/boston/2024/06/23.2

  I'm using a pre-text block to display the table, each row is one line,
each column separated by a TAB.  The first line, starting with "Table:", is
a table description.  The header and footer is separated by a line of
'----'.  Easy to hand write, and even easier to generate.  It's a
translation of this web page:

	https://boston.conman.org/2024/06/23.2

  But an even easier format:  I'll make a copy of one of the tables in a
possible Gemini table format:

``` Table: port70 (gopher server)—Each sample counts as 0.01 seconds.
*% time	*cumulative seconds	*self seconds	*calls	*self seconds	*ms/call	*total ms/call	*name
13.79	0.04	0.04	185781	0.00	0.00	luaV_execute
10.34	0.07	0.03	734588	0.00	0.00	index2value
6.90	0.09	0.02	398225	0.00	0.00	luaS_new
6.90	0.11	0.02	45028	0.00	0.00	luaH_newkey
3.45	0.12	0.01	1041939	0.00	0.00	yymatchChar
3.45	0.13	0.01	924394	0.00	0.00	luaG_traceexec
3.45	0.14	0.01	503889	0.00	0.00	yyText
3.45	0.15	0.01	260252	0.00	0.00	luaD_precall
3.45	0.16	0.01	245893	0.00	0.00	mainpositionTV
3.45	0.17	0.01	201753	0.00	0.00	auxgetstr
3.45	0.18	0.01	191931	0.00	0.00	yy_S
3.45	0.19	0.01	185373	0.00	0.00	equalkey
3.45	0.20	0.01	134088	0.00	0.00	yyDo
3.45	0.21	0.01	129432	0.00	0.00	yy_CHAR
3.45	0.22	0.01	101937	0.00	0.00	reverse
3.45	0.23	0.01	34759	0.00	0.00	luaH_getn
3.45	0.24	0.01	4473	0.00	0.00	getfirst
3.45	0.25	0.01	1625	0.01	0.01	traverseproto
3.45	0.26	0.01	834	0.01	0.01	strcore_wrapt
3.45	0.27	0.01	61	0.16	0.16	checkloops
3.45	0.28	0.01	2	5.00	5.00	deletelist
3.45	0.29	0.01	 	 	 	cclasscmp
0.00	0.29	0.00	924377	0.00	0.00	luaD_hook
0.00	0.29	0.00	391575	0.00	0.00	yymatchString
0.00	0.29	0.00	358374	0.00	0.00	luaH_getshortstr
0.00	0.29	0.00	261889	0.00	0.00	prepCallInfo
0.00	0.29	0.00	261296	0.00	0.00	luaD_poscall
*% time	*cumulative seconds	*self seconds	*calls	*self seconds	*ms/call	*total ms/call	*name
```

There.  A client can recognize "``` Table:" as being a table.  The data
until the following "```" is tab-separated values.  If a value starts with a
"*" it's a header.  The client can then get the width of each value and
insure everything is lined up properly.  Multiple spans of rows and columns
is probably not worth it, but I'm sure there's some syntax that could make
it easy to do.  Maybe each trailing '-' in a value represents a multiple
column span, and each tailing '^' a multiple row span.  For example, your
table:

+---------+----/----+
|Character|Code     |
+         +-----+---+
|         |Old  |New|
+---------+-----+---+

Would be:

``` Table:
*Character^	*Code-
	old	new
```

No quoting necessary (unless you *really* want tabs in a value, which,
in my opinion, shouldn't happen).  Way less typing.  If you want full
backwards compatibility, then move the "Table:" header to the first line
within the pre-formated block, like I do.  It's still readable in my
opinion.

  -spc