InfoDirectory is turning into a quite sophisticated mini spreadsheet
tool, allowing the user to specify colours, sizes, data and cell formats.
There are two data formats: the more sophisticated one is "sparse" format
and the simpler one is a CSV-separated format comprising headings and then
rows.

Sparse Format
-------------

first word: "sparse".
all other lines must be of the format:
<command>: <x>,<y> <Data including spaces>

There are four commands:

data: x,y Something to put in a Cell

    whatever comes after the coordinates (minus leading and trailing spaces)
    is put into the cell, e.g.
        data 5,4 hello
        data 5,4 55.2

    the data can also be HTML, e.g.
        data 5,4 <i>italics</i>
        data 5,4 <pre>infowar<br />again<br/></pre> <p>my friend</p>

cellspan: x,y rowspan colspan

    the grid is implemented as an HTML table, so the rules for
    table layout follow exactly, explicitly and precisely the rules
    for HTML "rowspan" and "colspan" (including pushing other cells
    out of the way and messing up what you *think* the layout of the
    table actually is).

    if you do not want either the rowspan or colspan changed,
    put "-" as the option e.g. cellspan: 1,2 - 5 to change the
    colspan only.

align: x,y [top,middle,bottom,-] [left,center,right,-]

    specifies the vertical and horizontal cell alignment.
    if you do not want a particular alignment changed,
    put "-" as the option.

cellstyle: x,y attribute value

    this command sets CSS style attributes on a cell.  values
    used MUST be those that an HTML table data cell can support.
    for a full list, look up the relevant W3C standards.
    known values include "width", "height", "color", "background"
    for width, height, foreground and background colours, respectively.
    width and height support "%", "px", "em" etc. e.g
        cellstyle 1,2 width 20%
        cellstyle 1,2 height 30px

Example:

sparse
data: 0,2 hello cell 0,2
data: 1,2 there cell 1,2
data: 2,2 55.2 cell 2,2
data: 0,3 hello2 cell 0,3
data: 1,3 there2 cell 1,3
data: 0,4 hello3 cell 0,4
data: 1,4 there3 cell 1,4
data: 2,4 55.23 cell 2,4
cellspan: 1,2 2 2
data: 0,0 heading1 cell 0,0
data: 1,0 <i>italics</i> <b>bold</b> cell 1,0
data: 2,0 &nbsp;
data: 3,0 &nbsp;
cellspan: 0,1 1 4
data: 0,1 <b>see how comments could be done</b>
align: 0,1 - center
cellstyle: 0,0 color #ff00ff
align: 1,2 top right
cellstyle: 1,2 background #00FF00
cellstyle: 0,0 width 200px

Array Format
------------

array
something, number, number, number, number, something else
5,9,2, 30.5, 28, "friend"
"enemy", 5,9,2, 30.5, 28
"shoehorn", 2, 3, 1, 99, 12.2

