The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
TODO List for Pod::HTML
=======================

* Bulleted =item's with no text content (=item * / =item o) do not need
  a <A NAME='...'>.

* include some comments in the HTML, e.g. where =for/=begin was used,
  creation date.

* provide an option to split the Index into _, 0, a-z
  default name is podidx (master), split names are
  podidx_ (symbols), podidx0 (numbers) and podidx[a-z]

* add toplevel index navigation (sym, num, a-z).
  Fix parsing for Sym (some text still occurs in this section)

* smartindex: put those =items in index that are referenced somewhere
  with L<...>

* Turn =over/=back without =item into <BLOCKQUOTE> or <P> with indent.

* the links to TOC on each page should point to the
  anchored item in the TOC list, so that one does not
  have to scroll to get near the last visited item.

* postpone loading of HTML::TreeBuilder, HTML::FormatPS etc.
  until they are really needed

Wolfgang Laun's suggestions:

* The automatic text generation "...on the...manpage" produces
  garbled text on perlop: C<use L<re>>, C<L<split>>. (This shouldn't, of
  course, be written this way. - One could implement "Do not add text if L<> is
  contained in C<>." Is it worth implementing this rule?)

  [MAREKR] implemented L<|link>, i.e. empty alttext gives link text only
  with latest Pod::Parser

* perlfunc: Many items are "duplicates" (resulting from the various
  possible signatures). It would be *nice* if the hyperlink target
  would bring you to the first of these entries (even if it is not
  an exact match, e.g. C<eof> ==> eof FILEHANDLE). Reason I ask for
  this is: On lookup, synonymous entries are above the upper border
  of the browser's text window.

  This may be somewhat difficult to achieve. I do it by a special
  heuristic mapping rule of item texts in the function determining
  the fragment from some item text:

   # honour the perlfunc manpage: func [PAR[,[ ]PAR]...]
   # and some funnies with ... Module ...
   return $1 if $text =~ m{^([a-z\d]+)(\s+[A-Z\d,/& ]+)?$};
   return $1 if $text =~ m{^([a-z\d]+)\s+Module(\s+[A-Z\d,/& ]+)?$};

* podtoc.html: Generate a structured layout (sections and nested lists)
  rather than linear table?

* podindex.html:
  - contains too much to be of real use (slow loading)
  - particularly bad: the 0-9 section (but 42 is missing ;-)
  - many links into perltoc, but these are dead ends

  What an index should contain (IMHO):
  - all =item's from perl(func|var|op|re).pod (I'm not sure about perlrun)
  - possibly the =item's from perldiag.pod
  - the package and pod names
  perhaps preceded by an explanation what to expect. 

  Consider omitting perllocal.pod - the generated links are erronous
  (or is there already an option to skip pod's - I didn't check).    

  [MAREKR] problem: this is very Perl-the-language specific, POD is more general
     maybe use a -perl switch?

* What I meant (and I'm not sure whether I've made myself clear enough) is that
  there won't be any links resulting from C<foo> *even in the paragraph(s)
  following the =item foo*. - I added this after reading a little in my
  generated HTML pages - it is quite a drag to find all these foo() hyperlinks
  in a paragraph headed with foo(), and not getting you anywhere else...

* This is an extension to the pod concept which I first
  implemented in the update of the original pod2html.
  I didn't like the way the STANDARD OPTIONS on the Tk
  pages were rendered. Seeing that the options are
  separated by TABs in the original pod text, I thought
  it possible to create a table from a plain text
  paragraph containing TABs in (almost) every line.
  This improves those Tk pages, but does not cause
  problems with any other existing page I know of.

  The algorithm detecting such table paragraphs is simple:

  #
  # is_table - is this a table
  #
  sub is_table($){
    my( $rLines ) = @_;
    return 0 if @$rLines <= 1;
    my $tl = 0;
    for( my $il = 0; $il < @$rLines; $il++ ){
        if( $$rLines[$il] =~ /\S/ && $$rLines[$il] !~ /\t/ ){
            return 0 if $il != 0 && $il != @$rLines;
        } else {
            $tl++;
        }
    }
    return $tl > 0;
  }

  I permit a top line without a TAB - this would be made into
  a table header line spanning all columns.

* Finally another suggestion (which I've added to my pod_html translator): For
  L<> references (and, possibly, also for <pagename>(<section>) patterns
  discovered in plain text) one can generate a
  hyperlink. E.g. from

    foo(3)

  you get

    <A HREF="http://somehost/cgi-bin/man.cgi?section=3&topic=foo">foo(3)</A>

  provided that you have installed this CGI program on your server. (We've found
  this on a HP machine; it's availble on Linux and Solaris, AFAIK, and should be
  on others as well. The HP thing  even shows further cross links to other
  standard UNIX man pages - very spiffy indeed!) All you need is a simple option
  giving the pattern for the http hyperlink into which one has to insert
  pagename and section, e.g.:

    --httpman="http://atuhcs4/cgi-bin/man.cgi?section=%section%&topic=%page%"

  and replace the %...% patterns with the actual values.

Nick's wishes:

* One weirdness in Tk's pods that PodToHTML was going to handle is the

  =for category

  stuff. I am not wedded to the particular name used, but what it is for
  is to group pods into "chapters" in the generated index.html
  I have a tweaked version of pod2ps that does that too - I can't remember
  if I left that in the MANIFEST and hence the tarball.
  I would not mind if PostScript generation moved to generating from
  HTML - provided we can sort out the font styles used by default,
  and can add some of pod2ps's PDF annotations.

  Aside from that I have no particular axe to grind - I just want the
  thing to "work".