The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.



0.19 Sun Oct 2 23:22:01 PDT 2005

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

0.18 Fri Sep 2 12:24:27 PDT 2005

- a few style fixes [Philip M. Gollucci <>]

- 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.

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.

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

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 nodes

- 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 Thanks to Mark Veltzer for reporting the problem.

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 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 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 items.

- 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's subs in 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 <head> 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 File::Spec.

- implement the splitting of the long <pre> 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

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 ( 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 ... 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 the guide

- 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 mm/dd/yy

- 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 <>]

- 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 <>]

- 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 <>]

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 Pod::POM-0.15.

- 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 linking.

- added the implementation of the 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...

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 chapters)

- 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 out.

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.

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 properly.

- 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 title'.

0.08 Sun Jan 6 04:26:23 SGT 2002

- add perl-5.00503 compat layer ( 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).

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.

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/

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 now.

- document the configuration files syntax in DocSet::Config

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

0.04 Wed Nov 21 10:00:07 SGT 2001

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

0.03 Wed Nov 14 00:11:56 SGT 2001

- requiring the class that does the converting in DocSet/DocSet/

- minor templates fixes

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.

0.01 Tue Nov 6 03:30:23 SGT 2001

- first release

3 POD Errors

The following errors were encountered while parsing the POD:

Around line 129:

An empty L<>

Around line 248:

An empty L<>

Around line 259:

An empty L<>