A client must send 'ADTABL' in the initial SUP to signify it supports the extension.
This extension will be used as an extension to the 'MSG' command, making it available in mainchat, chatrooms, PMs, etc. It will be used only as a feature broadcast. This will also allow for falling back to using the traditional tabs and newlines to separate data if the client doesn't support the TABL formatting. The sender will have to parse the markup and generate the equivalent table using newlines and tabs and send that as well for the non-TABL supporting clients.
Extension: TABL
Context: F, T
Message type: F
Flags:
NA | Table name
TD | Table data
The table name is optional and consists of an escaped string.
The table data is the data that the table holds. This will be in traditional HTML formatting with some modifications. Instead of the TH/TR/TD tags, just H,R, and D tags (header, row and data) will be used with an 'E' prefixing them to end the tag. It will be sent as an escaped string and does not need newlines to make the markup human-readable (See example).
The data must not contain the characters used in defining the tags. This means that the tag characters ('<' and '>') will have to be escaped. Clients that support the TABL extension must also recognize '\<' and '\>' as valid escaped strings.
The hub does not check the table for adherence to standards or verify that the table formatting is correct. The markup will be parsed by clients supporting the TABL extension as best it can (not unlike a web browser does).
Example:
Code: Select all
FMSG ASID +TABL NAExample\sTable TD\<R\>\<H\>Header\s1\<EH\>\<H\>Header\s2\<EH\>\<ER\>\<R\>\<D\>Row\s1,Cell\s1\<ED\>\<D\>Row\s1,Cell\s2\<ED\>\<ER\>
FMSG ASID -TABL Example\sTable:\nHeader\s1[TAB]Header\s2\nRow\s1,Cell\s1[TAB]Row\s1,Cell\s2
Suggestions welcome.