Stephen,

> I downloaded DocSet-0.14 and got the example running.
> See the results here.
> 
>    http://www.officevision.com/pub/DocSet/example/dst_html
>    http://www.officevision.com/pub/DocSet/example/dst_ps
> 
> FYI: I had to change the "id" in example/src/config.cfg
>      from "docs" to "home" (I assume anything would have worked)
>      because the "id" => "docs" was already in use in 
>      example/src/docs/config.cfg.  (It complained about a
>      duplicate id when I first ran it.)
>      (I don't have a patch file.)

Sorry about that. This example wasn't kept in sync with the doc, as i 
was mainly concentrating to finish perl.apache.org. I'm going to nuke 
this example and replace with a short version of perl.apache.org that 
really demonstrates all the features.

> If I understand how to use this correctly, I need my own
> distribution (perhaps "Devel::Perldocs") in which I
> have my own version of your "example" directory full of files.
> This defines styles, structure of resulting documents, and so forth.
> Devel::Perldocs would be the application component
> which uses [Module::Info and/or Devel::Metadata and/or Modinfo
> to gather the metadata (perhaps by implementing a replacement
> for DocSet::Source::* ?) and then uses DocSet to produce the
> documentation (with custom templates to create the
> desired look).

First, the best place to look at the usage is to download:
http://cvs.apache.org/snapshots/modperl-docs/

or using the cvs:
http://perl.apache.org/download/docs.html#Download

it includes the whole DocSet in its ./lib, but this is just to be safe 
and the site will always built properly if something goes wrong with 
system wide libraries. But otherwise this package sans the lib directory 
is all you need. (it creates the pds, src, etc).

so basically you need to have your distribution prerequisite DocSet.

> Rather than replace DocSet::Source::Pod, I could actually 
> create "metadata-enhanced" PODs as a result of all the metadata
> extraction and inherited-method-copying and then simply process
> these Pods in the normal way through DocSet.

Basically you either subclass DocSet::Source::Pod, or the top level 
DocSet::Source. And define your parser. I use Pod::POM for that, but you 
can use anything else.

Now you are the first to really extend things outside the main distro, 
so I'll be glad to work out with you the details and do the necessary 
changes to the code to make it really happen. Because currently the 
translation map is hardcoded in DocSet::Config:

my %conv_class = (
     'text/pod'  => {
                     'text/html'   => 'DocSet::Doc::POD2HTML',
                     'text/htmlps' => 'DocSet::Doc::POD2HTMLPS',
                     'text/ps'     => 'DocSet::Doc::POD2PS',
                    },
     'text/html' => {
                     'text/html'   => 'DocSet::Doc::HTML2HTML',
                     'text/htmlps' => 'DocSet::Doc::HTML2HTMLPS',
                     'text/ps'     => 'DocSet::Doc::HTML2PS',
                    },
     'text/plain' => {
                     'text/html'   => 'DocSet::Doc::Text2HTML',
                     'text/pdf'    => 'DocSet::Doc::Text2PDF',
                    },
);

> What other things would you describe had to be done in order
> to be able to generate documentation using DocSet which is
> similar to this?
> 
>    http://www.officevision.com/docs/perl
>    http://www.officevision.com/pub/p5ee/software/htdocs/api/

It's all about templates that render everything. DocSet builds a linked 
tree of docsets, chapters and links. In any node you can traverse the 
whole tree in any direction from the templates. For example this sitemap 
is autogenerated from a template that traverses all other nodes:
http://perl.apache.org/sitemap.html. DocSet works in two stages. First 
it parses everything and stores the data and metadata in objects. Then 
it renders everything using these objects.

The magic is happening in DocSet::NavigateCache. At any given moment you 
have the current node's navigation object. Then you can go up(), down(), 
first(), last(), next() etc within the templates. so building menus as 
in your example is easy. the new perl.apache.org is the best to 
demonstrate this functionality.

Just a word of caution, this project is very new and unpolished, so 
please bear with me if some things aren't clear or not perfectly 
working. As it gains more users I hope it'll become easier to grok. But 
I'm here to answer any questions you might have ;)

As mentioned at the beginning of this email, I'm going to work on making 
two examples this weekend. One for building a site like perl.apache.org, 
the other is to create slides and handouts. Once I'm done it'll be on 
its way to CPAN.

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

Reply via email to