=head1 NAME


=head1 0.19 Sun Oct  2 23:22:01 PDT 2005

- fix the =headX I<foo> rendering bug (the POD markup of the header
  wasn't getting converted into html)

=head1 0.18 Fri Sep  2 12:24:27 PDT 2005

- a few style fixes [Philip M. Gollucci <pgollucci@p6m7g8.com>]

- fix DocSet::Doc::POD2HTML::View::HTMLPS not to anchor =headX titles,
  since when rendering ps/pdf, some interpreters fail to render a
  proper link, leaving some ugly misplaced link frame. That link was
  pointing nowhere anyway, so it's a good thing it is gone.

- synced with html2ps changes html2ps-1.0b4 which was surprisingly
  updated 5 years later.

=head1 0.17 Sat Nov 20 00:27:32 EST 2004

- inherit the 'copy_skip' attribute if not set in the child

- fix fetch_pdf_doc_ver not to try to copy the pdf version of the
  document to the same directory.

=head1 0.16 Wed Apr 30 10:49:15 EST 2003

- set $DocSet::5005compat::VERSION explicitly as previous workarounds
  to make EU::MM::parse_version not complain have failed.

- if the cache read fails, rebuild the docset as if the cache file
  didn't exist (to solve the Storable binary incompatibilities probs)

- purge cache files when the rebuild is forced 

=head1 0.15 Mon Nov 25 10:32:27 SGT 2002

- fix a missing dependency: the modified() is set for the index.html
  objects when any of the index_(top|bottom) attributes's files are
  newer than the autogenerated index.html based on any of these files.

- Fix DocSet::NavigateCache::new() to properly handle docsets with no

- in DocSet::5005compat added a workaround for a bug in
  ExtUtils::MakeMaker v < 6.00, which tries to parse any word which
  include VERSION in it, which causes problems when you do 'r' in
  CPAN.pm. Thanks to Mark Veltzer for reporting the problem.

=head1 0.14 Mon Aug 19 14:29:36 SGT 2002

- added two examples that one can play with which demonstrate all the
  DocSet features:
  o examples/site/ - the shrinked version of perl.apache.org
  o examples/presentation - a package for generating slides/handouts

- support local docset options, which can set command line options for
  the scope of the current docset and below it.

- support the automatic page-break insertion in the slides-mode (-e)

- make the index_node's meta.id and meta.stitle attributes available
  to the templates

- fix the html title rendering, not to have <a href="" name=""> as
  some older browsers crush on that, use 
  <a href=""></a><a name=""></a> instead

- in each document verify that there are no duplicated anchors and
  croak if there are.

- added the croak method to the rendering class, so if there is a
  problem the context is dumped (the problematic source file).

- croak if the config file includes both: grouped and non-grouped

- added docset id duplication checking, the program will croak when a
  duplication is detected and report the offending config file and the
  config file it was previous seen in.

- fix a bug with properly setting doc.dir.abs_doc_root, for the docs
  in the very root e.g, src/404.html.

- added a new special attribute: 'changes', which points to a hidden
  chapter including changes for each docset (if such exists). this is
  an improvement over the inclusion of the changes.pod or alike along
  with all other chapters because usually people don't want to see
  changes and when the docset pdf is created huge changes files can be
  an unwanted burden, so now if this attribute is included, the pdf
  for the docset won't include this file in it.

- overload Carp.pm's subs in Config.pm and when die'ing or warn'ing
  start dumping the relevant object attributes, like the used config
  file, to aid the problem analysis.

- provide a fix for File::Spec->abs2rel for WIN32 [Per Einar Ellefsen

- improve the parsing of the E<lt>headE<gt> and make base, meta and
  link elements available to the templates. [Per Einar Ellefsen

- correct the mapping of config.cfg to autogenerated index.html, also
  use path2uri to convert from a path to uri. also fix the stripping
  of the full base path on the non unix system, by using abs2rel from

- implement the splitting of the long E<lt>preE<gt> text only in
  DocSet::Doc::POD2HTMLPS's view_verbatim, where it's needed. Use the
  simple view_verbatim() in DocSet::Doc::POD2HTML.

- must always use '/' when generating URIs, that means that fs paths
  from OS like Win32 cannot be used as is. So we use the OS specific
  splitdir to get rid of the separators and join the dirs with '/'.

- fix a bug with resolving L<> when not the minimal lenght link is
  used, also solved a parallel bug with resolving links to ::index

- skip empty lines in preamble, when extracting pod

- provide the same data for the ps/index template as it was provided
  for html/index

- change the <pre> rule generator, to do all the formatting work in
  the stylesheet. plus add a new line in front of <pre> so the text
  browsers will present it nicely.

- if the <pre> section is too long ps2pdf fails to generate pdf, so
  split it into 40 lines chunks.

- sitemap is now correctly highlighted in the menu when selected

=head1 0.13 Fri May 10 02:53:53 SGT 2002

- implemented a special docset type: "sitemap" which automatically
  generates a sitemap from the root of the docset the sitemap is
  located in and all the way down including all sub-docsets. 

- implemented the down() method in the NavigateCache class. Now it's
  possible to traverse the whole set of docsets in both directions
  starting from any node in any docset.

- force rebuild of the docset if the cache file is missing, even if
  the target files aren't older than the source files. (this is the
  case where for some reason the cache file was deleted)

- set the 'stitle' attr to 'title' for 'links' type, if missing.

- handle the case where docsets, links or chapters get removed
  from docset. The cache uses only active items (listed in config.cfg)
  changed the way the ordered list of items is constructed

- fix the bug where a change in the main config.cfg won't indicate a
  modified docset and therefore a rebuild.

- I cannot reproduce the trailing punctuation character bug
  (http://foo.com/bar.html.) in automatic POD URLifier, removed from
  the TODO list.

- copy_glob => [foo/*] doesn't pick .dot_files in the first level of
  subdir, because in unix glob() '*' doesn't match .files.
  'copy_glob => [foo]' works correctly. Now this behavior is documented.
  also fixed wrong documentation about copy_glob regarding creating
  empty dirs.

- improve the logic for searching resources. If I have a setting of
  search_paths as:

            search_paths => [qw(

  and the resource request is for L<foo|win32::binaries> everything is
  cool if there is docs/1.0/win32/binaries.pod. However if somebody is
  doing a better job and doing a fully qualified request like
  L<foo|docs::1.0::win32::binaries> the page used to be reported as not
  found, because it's cached in the prescan as 'docs/1.0' =>
  'win32/binaries.pod'. Now this problem is solved.

- add a special handling for L<...|foo::bar::index> so only
  foo::bar is checked that it's a dir in the search path and
  index.html is autogenerated. This allows us to do L<the

- improve the exception handling of incorrect paths in config.cfg,
  when a chapter item cannot be found.

- now the 'src' link links to a file.orig so it won't be overwritten by the 
  generated html if the source was .html in first place.

- fix a bug where a few sizes fell through in format_bytes

- add a cool feature where the titles are linked their own entries in
  the TOC, so one can easily move back and forward between big
  sections of the document.

- change the timestamp to use local(gmtime) instead of ambiguous

- move to use pre-bar css class for the virtual bar in <pre></pre>
  sects (the user has to define this class).

- replaced call to `which` with a portable which function in
  DocSet::Util (taken from Apache::Build in modperl-2.0 and made to
  use the PATHEXT env variable on WinNT: I can re-submit this one into
  the modperl-2.0 tree if you think that'll be useful, it finds the
  specified file terminated by .exe, .bat, etc.. [Per Einar Ellefsen

- use perl %ENV instead of `env` to set PERL5LIB whenh calling
  docset_build. [Per Einar Ellefsen <per.einar@skynet.be>]

- had to replace all regexes that used a directory/file path, and use
  quotemeta() there, because the backslahes created illegal escape
  sequences. [Per Einar Ellefsen <per.einar@skynet.be>]

- changed some things before calling URI in DocSet::Doc; it not, the
  directory name would be considered part of the host name and thus
  not tried to be opened. So I replaced \ with /, as that'll open the
  file correctly. [Per Einar Ellefsen <per.einar@skynet.be>]

=head1 0.12 Thu Mar 28 10:20:07 SGT 2002

- add code that parses source HTML and escapes unsafe URI/HTML chars
  in links.

- The path must be either ./foo or ../../foo and never leading ./
  followed by ../, since the later doesn't work in IE on Mac.

- partial implementation of L<> handling in POD according to the
  latest spec, submitted to Pod::POM and therefore now DocSet requires

- hyperlinks validation with -l option is implemented now.

- implemented a RunTime system which allows to set/unset and retrieve
  the current rendering object, needed for implementing
  view_seq_link_transform_path() and view_seq_file() which need to use
  the rendering object.

- implemented the view_seq_link_transform_path to locate the elements
  in L<> in the search path and properly resolve all the internal

- added the implementation of the F<> sequence via view_seq_file(),
  which links to a file if it finds it, otherwise it italize the path.

- working on documenting a few classes

- the templates now have an access to a new variable
  doc.dir.path_from_base which specifies the path from the root/base
  to the document without including the final file. ala
  File::Basename::dirname(), it doesn't include any leading ./ and
  closing / and originally developed for the searching sub-docsets.

- don't gzip the source and pdf docs anymore, it makes things harder
  on the users. so what that they have to download a bit more...

=head1 0.11 Mon Feb 4 18:37:38 SGT 2002

- fix DocSet::Util::copy_file to preserve file
  permissions. File::Copy::syscopy is broken.

- changed the behavior of NavigateCache::prev() method. If the current
  node is hidden, we don't link it to the prev node, even if it's not
  hidden. If we do it creates problems with circular linking if the
  hidden object is linked via 'links => []' in the config file, and
  there is some real node coming after it. (e.g. links followed by

- source html pages now are converted to pdf as well.

- source html pages now are linked to their src and pdf versions in
  release versions (dst_html) if the template supports that.

- fix the <a name=""> anchor generator to stip the leading and
  trailing spaces in the titles.

- the <pre> sections are now rendered with help of html tables with
  the left cell being a vertical line. To make the pre sections stand

=head1 0.10 Thu Jan 31 00:54:33 SGT 2002

- fix a bug where hidden chapters were added to the generated PDFs.

- fixed paths like .././foo to be ../foo when handed to the templates.

- src HTML docs are parsed for:

  <meta name="description" content="abstract goes here">

  so now in templates we have doc.meta.abstract if provided by the
  source doc.

=head1 0.09 Fri Jan 25 01:57:22 SGT 2002

- use the first para of a pod DESCRIPTION section on the index page,
  as a document abstract.

- fix =head sections pod markup rendering

- split the pod by =head[1-4] sections when handing over to the
  template, now the [TOC] appears at the end of each =head[1-4]
  sections in the rendered HTML.

- rewrite the overloaded view_head method, to embed the name anchor

- changed the timestamp to be the output of 'scalar localtime'

- now individual documents are rendered as PDF as well (before only
  docsets were rendered as PDF in pdf mode).

- split the copy_as_is functionality into scan and copy, so scan can
  detect whether any of the items were modified and mark the docset as
  dirty (modified).

- perfect the modification control, now only if at least one of the
  items in the docset (chapters, files, docsets, config file) was
  modified the docset will be rebuilt, otherwise it'll be skipped,
  making the partial rebuild/updates much faster.

- the html pages now link to the pdf and source version of the
  document (by prior copying and gzipping these into the same dir).

- Added a 'stitle' attribute in addition to the 'title' attribute. The
  former is for use in the menu and nav bars, stands for 'short

=head1 0.08 Sun Jan  6 04:26:23 SGT 2002

- add perl-5.00503 compat layer (warnings.pm doesn't exist). DocSet is
  now 5.00503 complient.

- add various fixes for a buggy perl 5.00503 on FreeBSD 4.5-PRERELEASE

- resolve relative URLs into full ones without any ../.., since the
  app must work with full pathes while building things. (some perl
  versions have problems if the paths aren't full).

=head1 0.07 Sat Jan  5 22:31:53 SGT 2002

- changed the config file name in example/ s/config/config.cfg/

- POD parsing warnings now indicate the problematic filepath

- fix a bug in grouped-index TOC generation (logic rewrite)

- now requires Pod::POD v0.12

- updated html2ps's version to html2ps-1.0b3 (with local patches)

- Now certain chapters and docsets can be marked as hidden, they will
  be normally processed, but not linked from other pages.

=head1 0.06 Mon Nov 26 11:19:03 SGT 2001

- calls src_filter hook only if defined in the converter class

- change the converters inheritance tree. (e.g. DocSet::Doc::HTML2HTML
  inherits from DocSet::Source::HTML, which inherits from DocSet::Doc)

- bug fix in HTML2HTML (src_filter wasn't declared)

- split pod on /\n\n/ not /\n\s*\n/

=head1 0.05 Fri Nov 23 11:20:48 SGT 2001

- support .pm source files (added DocSet::Source::POD::extract_pod
  source filter, that extracts pod from .pm files)

- fix extract_pod to support empty of pod docs.

- fix the multi-parent inheritance. the src_filter wasn't called until

- document the configuration files syntax in DocSet::Config

- added prerequisites:
  'Template' => '2.0',

=head1 0.04 Wed Nov 21 10:00:07 SGT 2001

- added prerequisites:
   'HTML::Parser' => '3.25',
   'Pod::POM'     => '0.02',

=head1 0.03 Wed Nov 14 00:11:56 SGT 2001

- requiring the class that does the converting in

- minor templates fixes

=head1 0.02 Thu Nov  8 03:33:23 SGT 2001

- the keys 'docsets', 'chapters' and 'links' can be repeated as many
  times as wanted. This allows to mix various types of nodes and still
  have oredered the way you want. So now you can have a chapter
  followed by a docset and followed by a few more chapters and ended
  with a link.

- config files have changed they config container from %c to @c to
  accomodate repetitive keywords: chapters, docsets, links, to low mix
  the order of these. To fix the files in the 'example' setup run:

  % cd example/src
  % find . -name config -exec perl -pi -e 's|\%c|\@c|g' {} \;

  do the same in your setup if you've one already.

- since normally books consist of parts which group chapters by a
  common theme, support this feature as well. So the index can now be
  generated as:

  part I: Installation
  * Starting
  * Installing

  part II: Troubleshooting
  * Debugging
  * Errors
  * Help Links
  * Offline Help

  This happens only if this feature is used, otherwise a plain flat
  toc is used: to enable this feature simply splice nodes with
  declaration of a new group like this:

  group => 'Installation',
  chapters => [qw(start.pod install.pod)],

  group => 'Troubleshooting',
  chapters => [qw(debug.pod errors.pod)],
  links    => [{link data}],
  chapters => ['offline_help.pod'],

- config: index pages can now specify a top and bottom documents to be
  added before and after the automatically generated toc. if these
  docs are for example in HTML, they have to be written in a proper
  html, so the parser will be able to extract the body.

=head1 0.01 Tue Nov  6 03:30:23 SGT 2001

- first release