From the comments of the html+tables program:
----------------------------------------------------------------------
html+tables v0.4 written by Brooks Cutter (bcutter@paradyne.com)
- creates preformatted text tables from HTML+ Table definitions.
This program will parse a HTML+ Document replace HTML+ Tables
(...) with preformatted text tables.
For more information on the specific details of HTML+ Tables see:
http://info.cern.ch/pub/www/dev/htmlplus.dtd
http://info.cern.ch/hypertext/WWW/Markup/htmlplus.dtd.txt
http://info.cern.ch/hypertext/WWW/Markup/htmlplus.ps
This program isn't intended to be used as a gateway - because
of the overhead of continually parsing the documents (and the
lack of security (ie: checking pathnames)) - but instead documents
should be processed once with this program, like:
html+tables file.html+ > file.html
This program is a temporary measure - Until HTML+ Table support
shows up in X/Mosaic, WinMosaic, Lynx, etc... (It should also
be useful for anyone who puts together the "HTML to printed book"
package)
Note on HTML+ Compliance:
This program implements most, but not all of the HTML+ table options.
Furthermore, certain parts of the spec were vague (or more likely I
didn't read all the information out there) such as how to handle
wordwrapping. The point is that while I hoped that when HTML+ tables
appear in NCSA's X/Mosaic and Win/Mosaic, their behavior may be different
then the output of this script..
What it does and doesn't do:
- preformatted ascii tables are surrouned with
and
- .. is a table without borders
- .. is a table with borders
- and put the title at the top of the table
- puts the table at the bottom
- and | are table header and table data - but they are treated
*EXACTLY* the same. Also none of their options are supported
like align=(left,center,right) or rowspan or colspan..
- | terminates a row. It isn't necessary right before the tag.
- Empty rows are deleted, but empty columns aren't
- It ignores CR's in the input stream - presumably the HTML way..
- It will size the tables (and wrap the text in cells) according to the
length in $terminal_width
- when text is wrapped it attempts to break the lines on a space, a comma
- and a period, in that order. If it's a space, it doesn't show up
on the next line
- the tags ... are supported, but .. and ..
aren't because of a bug in the viewers with enhanced preformatted
text.
- when wordwrapping text with .., if it breaks the text in the
middle of the hyperlinked text, the hyperlink is continued to the
next line.
- Embeds the date the file was converted and the version of html+tables
in the output as a HTML/SGML
- I think it goes without saying that isn't supported..
(Even if I could find the gif at conversion time to check the
size, I don't know what size the preformatted text will be rendered
in. Besides, I don't need it...)
Known bugs:
- table may not be resized to _exactly_ $terminal_width..
- When wrapping occurs in a table cell, after all wrapping is
completed there may be more than one space between the longest string
in table cell.
- May be a few other small bugs with cell formatting
Limitations:
- a one character wide column requires 5 characters to display:
two for horizontal lines, two spaces and 1 character of display.
therefore, on a 80 column table the most columns you can have is
16 (80/5) columns. The program will exit with a error message if you
exceed $terminal_width/5 columns
Changes in v0.4: (first release)
- fixed bugs in formatting lines with HTML tags
----------------------------------------------------------------------
Here are some examples of the output of html+tables:
----------------------------------------------------------------------
Table #1: A simple table with a border, title at the top, 3 rows
and 4 columns.
----------------------------------------------------------------------
An Example of a Table
| average | other |
height | width | category |
males | 1.9 | .003 | yyy |
females | 1.7 | .002 | xxx |
| |
----------------------------------------------------------------------
An Example of a Table
+---------+---------+----------+-----+
| | average | other | |
|---------|---------|----------|-----|
| height | width | category | |
|---------|---------|----------|-----|
| males | 1.9 | .003 | yyy |
|---------|---------|----------|-----|
| females | 1.7 | .002 | xxx |
+---------+---------+----------+-----+
----------------------------------------------------------------------
Table #2: The same as Table #1 except the title is at the bottom
----------------------------------------------------------------------
An Example of a Table
| average | other |
height | width | category |
males | 1.9 | .003 | yyy |
females | 1.7 | .002 | xxx |
| |
----------------------------------------------------------------------
+---------+---------+----------+-----+
| | average | other | |
|---------|---------|----------|-----|
| height | width | category | |
|---------|---------|----------|-----|
| males | 1.9 | .003 | yyy |
|---------|---------|----------|-----|
| females | 1.7 | .002 | xxx |
+---------+---------+----------+-----+
An Example of a Table
----------------------------------------------------------------------
Table 3: The same as Table #1 but with no border:
----------------------------------------------------------------------
An Example of a Table
| average | other |
height | width | category |
males | 1.9 | .003 | yyy |
females | 1.7 | .002 | xxx |
| |
----------------------------------------------------------------------
An Example of a Table
average other
height width category
males 1.9 .003 yyy
females 1.7 .002 xxx
----------------------------------------------------------------------
Table #4: Same as table 1 but with a long string to demonstrate
wrapping
----------------------------------------------------------------------
An Example of a Table with Wrapping
| average | other |
height | width (This is a number. Numbers, historically
have been used for a variety of purposes...) | category |
males | 1.9 | .003 | yyy |
females | 1.7 | .002 | xxx |
| |
----------------------------------------------------------------------
An Example of a Table with Wrapping
+---------+--------------------------------------------+----------+-----+
| | average | other | |
|---------|--------------------------------------------|----------|-----|
| height | width (This is a number. Numbers, | category | |
| | historically have been used for a variety | | |
| | of purposes...) | | |
|---------|--------------------------------------------|----------|-----|
| males | 1.9 | .003 | yyy |
|---------|--------------------------------------------|----------|-----|
| females | 1.7 | .002 | xxx |
+---------+--------------------------------------------+----------+-----+
----------------------------------------------------------------------
Table #5: Same as table 1 but with a long string to demonstrate
wrapping and tag
----------------------------------------------------------------------
An Example of a Table with Wrapping
| average | other |
height |
width
(This is a number. Numbers, historically have been used for a variety
of purposes...)
| category |
males | 1.9 | .003 | yyy |
females | 1.7 | .002 | xxx |
| |
----------------------------------------------------------------------
An Example of a Table with Wrapping
+---------+--------------------------------------------+----------+-----+
| | average | other | |
|---------|--------------------------------------------|----------|-----|
| height | width (This is a number. Numbers, | category | |
| | historically have been used for a variety | | |
| | of purposes...) | | |
|---------|--------------------------------------------|----------|-----|
| males | 1.9 | .003 | yyy |
|---------|--------------------------------------------|----------|-----|
| females | 1.7 | .002 | xxx |
+---------+--------------------------------------------+----------+-----+
----------------------------------------------------------------------
Please send bug reports, comments, etc to bcutter@paradyne.com
| | | | |