DocSet::* TODO list ### general todo ### - should probably read from the disk one object at a time and release the memory as it's being completed. (meaning object_store, needs to store things on the disk) DocSet.pm: in scan: $self->object_store($chapter) later in render for my $obj ($self->stored_objects) { $obj->render($cache); - Need to improve the link checker to verify the #anchors. For that we need to port the previous system, where when headers are parsed they are also stored in some db (dbm file?) and then can be verified for existence with L<> is called. - need a new attribute which points to the current docset root, so even if we are in 'index.html' it will still point to '.'. cur_docset_rel_dir? which is simply doc.dir.rel_doc_root in the case of chapters and "." in the case of index.html. - if all the target html docs were brought up-to-date and the pdf files didn't exist. When the pdf files are built in the future (without -f) they won't be linked to the html pages, because the html pages rebuild is skipped. (currently must use -d flag to pick up the newly created pdf files). Not sure how to handle this, probably somehow the source file's timestamp should be moved ahead to force the update of the html files. Or the corresponding target html files should be removed or set a timestamp before the timestamp of the source files. - path_from_base isn't set correctly everywhere, e.g. it isn't set in about/index.html though it's set in docs/index.html. - Need to document the configuration file's features (partially done in Config.pm). - Need to document what objects/attributes are available in the templates (more docs inside the templates?) - Should use File::Spec when working with physical paths. - DocSet::Doc::POD2HTMLPS currently is almost the same as DocSet::Doc::POD2HTML. need to reuse the code from DocSet::Doc::POD2HTML. - DocSet::Config::files_to_scan_copy could handle accept/deny pattern rules/mime types (now it handles only glob/deny rules) ### optimization ### - the code creates lots of objects and some are sticking around for a long time, thus increasing the memory usage. Should check whether some objects can be undef'ed when they aren't needed anymore. This can be a question of speed versus memory usage. For example NavigateCache currenly caches all the caches, which may be a good thing in terms of speed, but not good in terms of memory. luckily the cache is internal to the class, so objects shouldn't carry copies around and these can be killed. - cache writes to disk: because we rewrite _order_ids on each invocation, we have to sync the cache to the disk, even if it didn't really change. In the future we may do some checksum check and write the cache to disk only if it has changed. ### missing features / not urgent ### - missing split_html output mode (port from Pod::HtmlPsPdf) - missing tar.gz packaging support (port from Pod::HtmlPsPdf) - version support for books (end-node docsets) )(so each book can be versioned, version used from CPAN release, if we are going to release source books on CPAN) ### nice to have new features ### - index plugin. so instead of linking to some pages from index.html, it'll link to the local files ala mod_autoindex. supply patterns to use for matching only specific files. we need this for example for /dist and I want it for my site's modules/ directory, so I can simply add/remove files and they will be automatically reindexed. - Makefile-like support feature: Scan for Makefile, Makefile.PL and make.pl. And run these if encountered, before starting the processing of the docsets. If this is implemented we don't have to commit autogenerated files. - Need to encode email addresses to protect our authors from extra SPAM. Consider using Apache::AntiSpam. It does html encoding, which works for users, but not for spammers: http://search.cpan.org/search?dist=Apache-AntiSpam - In L<> make the title optional. If it's not provided, figure out the title by finding the page L<> points to. Moreover try to do the same for sections as well.