Man Linux: Main Page and Category List

NAME

       freetable - tool for making HTML tables generation easier

VERSION

       This manpage describes version 2.3 of freetable.

       It might be not 100% accurate if you use different version.

SYNOPSIS

       freetable [options] filename

       or

       freetable [options]

       Possible options are :

       -h, --help     Print usage info and exit

       -V, --version  Print version information and exit

       -c, --comment  Insert comment before every cell to point its location

       -b, --no-nbsp  Do not insert   to empty cells for lowered-3D
       apperance

       -w, --warning  Print a warning before each generated table that you
       should not change it. You should change its source.

       -l, --location Substitute <row> and <col> flags inside table with
       correct cell’s location

       -m, --macro [program]
                      Use macro procesor to proces cells content (default: m4)

WARNING

        DO NOT USE MACRO PROCESSOR OVER UNSURE SOURCE
        M4 MAY BE USED TO COMPROMISE YOUR SECURITY
        FOR MORE INFORMATION ON THIS EXEC :

       info m4 UNIX commands syscmd

DESCRIPTION

       This is free replacement of wwwtable

       HTML is great language, but have one horrible flaw : tables. I spent
       many hours looking at HTML source I just written and trying to guess
       which cell in source is which in browser.

       If this also describes you, then read this manpage and your pain will
       stop.

       Program read HTML source from either stdin or file. Then it searches
       for line starting table:

           <wwwtable [options]>

       Then it analyzes table, put correct HTML table in this place and
       continue searching for the next table.

TABLE SYNTAX

       It is very easy:

           wwwtable :
           <wwwtable [wwwtable_options]>
           [preamble]
           [cell]
           [cell]
           ...
           </wwwtable>

       wwwtable_options will be passed to <table> tags. There is no magic
       inside preamble. It can be any HTML text. It will be simply put in
       front of table.

       cell is either normal_cell (<td> tag) or header_cell (<th> tag).  At
       least it was this way in freetable 1.x.  See the next section for
       alternative cell address syntax.

           normal_cell :
           (row,col) cell_options
           cell_content

           header_cell :
           ((row,col)) cell_options
           cell_content

       cell_options will be passed to cell tag. There is magic inside colspan
       and rowspan keys are parsed to make correct table.

       cell_content can be anything. It may contain text, tags, and even
       nested wwwtables.

       If you use -m (or --macro) option, it will be passed thru m4(1), with
       <row> and <col> set to adress of curent cell

       row and col are either numbers locating cells, expressions relative to
       previous cell or regular expresions to match few of them. Unlike
       wwwtable, freetable can use regular expresions for header cells. Also *
       can be used, and it mean .* really.

       Relative expressions are :

       = or empty means : the same as previous

       + or +X means : one and X more than previous

       - or -X means : one and X less than previous

       If many definisions adress the same cell all options and contents are
       concatenated in order of apperance.

       If you want to use only regular expresions you must tell program about
       the last cell :

           <wwwtable>
           (*,1)
           these are colums 1
           (1,*)
           these are rows 1
           (4,4)
           </wwwtable>

ALTERNATIVE CELL ADDRESS SYNTAX

       It is inconvenient to specify cell address as regular expression.  So
       in freetable 2.0 two new methods were introduced.  Both can be used to
       either normal or header cells.

       Full bakward compatibility is preserved.  To preserve it, new syntax
       had to be introduced.  Unfortunatelly, you can’t specify row address
       using one method, and column address using another.  To come around
       this, both new methods are very liberal and allow you to use =, +, -,
       +X -X and null string with the same meaning as they have in old
       addressing method.

       Unlike regular expression method, new methods will find out the last
       cell automatically.

       EXPLICIT RANGES

           (rowrange;colrange) cell_options
           cell_content

       Syntax for both rowrange and colrange is like: 1-2,4-7,9,12.
       Duplicates will be eliminated. For purpose of relative addresses last
       given number is used. So if you write

           (1-100,32;1)
           foo
           (+,)
           bar

       Cell (33,1) will contain ‘foobar’ and all others only ‘foo’.

       ARBITRARY PERL CODE

           ({code for rows},{code for tables}) cell_options
           cell_content

       You can use arbitrary Perl one-liner as long as it matches our not very
       intelligent regular expressions and evaluates to list.  Unfortunatelly
       there isn’t any regular expression for Perl code, but as long as it
       doesn’t contain },{ and }) it should work.  Example:

           <wwwtable>
           ({grep {$_%3 == 1} 1..100},{1..2,4})
           foo
           </wwwtable>

       Will evaluate to 100 rows x 4 columns table with ‘foo’ in every 1st,
       2nd and 4th column of every row with number equal 1 modulo 3.

       If you want to use "arbitrary code" in one part of address and explicit
       range in the other, change - into .. in defenition of range, and put in
       between { and }.

       If you want to use "arbitrary code" in one part of address and regular
       expression in the other, you have to write {grep {/expression/}
       from..to}.  Unfortunatelly, in this case you have to specify size of
       the table explicitely.

INCOMPATIBILITIES WITH WWWTABLE

       If you was formerly user of wwwtable and want to change your tool, you
       should read this. Most of this is about regexps handling.  Notice also
       that wwwtable couldnt do location tags substitution nor macroprocesing.

       Option -w has completely oposite meaning. We dont print warnings by
       default, and -w or --warning is used to force warnings.

       Table header fields can be specified by regexps ex :

           ((1,*))

       It was impossible in wwwtable.

       Axis counters are 100% orthogonal. This mean that code :

           (*,1) width=30
           (*,2) width=35
           (*,3) width=40
           (=,=)
           Foo

       Foo will appear in 3rd column. If you wanted it to be in 1st you should
       write :

           (*,1) width=30
           (*,2) width=35
           (*,3) width=40
           (=,1)
           Foo

       or

           (*,) width=30
           (*,+) width=35
           (*,+) width=40
           (=,1)
           Foo

       In freetable 2.0 two new methods o specifying cell address were
       introduced. They are completely incompatible with wwwtable.

BUGS

       "Arbitrary Perl Code" cell address will fail on very complex Perl code.

SEE ALSO

       m4(1)

AUTHOR

       Tomasz Wegrzanowski <taw@users.sourceforge.net>