=head1 NAME OODoc::Format::Pod - Produce POD pages from the doc tree =head1 INHERITANCE OODoc::Format::Pod is a OODoc::Format is a OODoc::Object OODoc::Format::Pod is extended by OODoc::Format::Pod2 OODoc::Format::Pod3 =head1 SYNOPSIS my $doc = OODoc->new(...); $doc->create ( 'pod' , format_options => [show_examples => 'NO'] , append => "extra text\n" ); =head1 DESCRIPTION Create manual pages in the POD syntax. POD is the standard document description syntax for Perl. POD can be translated to many different operating system specific manual systems, like the Unix C system. =head1 OVERLOADED =head1 METHODS =head2 Constructors OODoc::Format::Pod-EB(OPTIONS) =over 4 See L =back =head2 Inheritance knowledge $obj-EB([OBJECT]) =over 4 See L =back =head2 Attributes $obj-EB =over 4 See L =back $obj-EB =over 4 See L =back $obj-EB =over 4 See L =back $obj-EB =over 4 See L =back =head2 Page generation $obj-EB(MANUAL, STRING) =over 4 See L =back $obj-EB(IN, OUT) =over 4 The POD is produced in the specified IN filename, but may contain some garbage, especially a lot of superfluous blanks lines. Because it is quite complex to track double blank lines in the production process, we make an extra pass over the POD to remove it afterwards. Other clean-up activities may be implemented later. =back $obj-EB(OPTIONS) =over 4 Option --Defined in --Default append '' format_options OODoc::Format [] manual OODoc::Format project OODoc::Format template OODoc::Format undef . append => STRING|CODE =over 4 Text to be added at the end of each manual page. See L for an explanation. =back . format_options => ARRAY . manual => MANUAL . project => STRING . template => LOCATION =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(OPTIONS) =over 4 The OPTIONS are a collection of all options available to show* methods. They are completed with the defaults set by L. Option--Default append '' manual output . append => STRING|CODE =over 4 Used after each manual page has been formatting according to the standard rules. When a STRING is specified, it will be appended to the manual page. When a CODE reference is given, that function is called with all the options that L usually gets. Using C is one of the alternatives to create the correct Reference, Copyrights, etc chapters at the end of each manual page. See L. =back . manual => MANUAL . output => FILE =back $obj-EB(MANUAL, OBJECT, [TEXT]) =over 4 Create the text for a link which refers to the OBJECT. The link will be shown somewhere in the MANUAL. The TEXT will be displayed is stead of the link path, when specified. =back $obj-EB(STRING) =over 4 There is (AFAIK) no way to get the standard podlators code to remove all markup from a string: to simplify a string. On the other hand, you are not allowed to put markup in a verbatim block, but we do have that. So: we have to clean the strings ourselves. =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(FILE, CHAPTER, INDENT) =over 4 =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(NAME, OPTIONS) =over 4 See L =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(NAME, OPTIONS) =over 4 See L =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB((@)) =over 4 See L =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB(OPTIONS) =over 4 See L =back $obj-EB =over 4 Option--Default ARRAY header output widths undef . ARRAY => -OF-ARRAYS =over 4 An array of arrays, each describing a row for the output. The first row is the header. =back . header => ARRAY . output => FILE . widths => ARRAY =back =head2 Commonly used functions $obj-EB(FILENAME) OODoc::Format::Pod-EB(FILENAME) =over 4 See L =back $obj-EB(DIRECTORY) OODoc::Format::Pod-EB(DIRECTORY) =over 4 See L =back =head2 Manual Repository $obj-EB(MANUAL) =over 4 See L =back $obj-EB(NAME) =over 4 See L =back $obj-EB(NAME) =over 4 See L =back $obj-EB =over 4 See L =back $obj-EB(NAME) =over 4 See L =back $obj-EB =over 4 See L =back =head1 DETAILS =head2 Configuring Probably, the output which is produced by the POD formatter is only a bit in the direction of your own ideas, but not quite what you like. Therefore, there are a few ways to adapt the output. =head3 Configuring with format options L or L can be used with a list of formatting options which are passed to L. This will help you to produce pages which have pre-planned changes in layout. example: format options use OODoc; my $doc = OODoc->new(...); $doc->processFiles(...); $doc->prepare; $doc->create(pod => format_options => [ show_subs_index => 'NAMES' , show_inherited_subs => 'NO' , show_described_subs => 'USE' , show_option_table => 'NO' ] ); =head3 Configuring by appending By default, the last chapters are not filled in: the C and C chapters are very personal. You can fill these in by extending the POD generator, as described in the next section, or take a very simple approach simply using L. example: appending text to a page use OODoc; my $doc = OODoc->new(...); $doc->processFiles(...); $doc->prepare; $doc->create('pod', append => <<'TEXT'); =head2 COPYRIGHTS ... TEXT =head3 Configuring via extension OODoc is an object oriented module, which means that you can extend the functionality of a class by creating a new class. This provides an easy way to add, change or remove chapters from the produced manual pages. example: remove chapter inheritance $doc->create('MyPod', format_options => [...]); package MyPod; use base 'OODoc::Format::Pod'; sub chapterInheritance(@) {shift}; The C package is extending the standard POD generator, by overruling the default behavior of C by producing nothing. example: changing the chapter's output $doc->create('MyPod', format_options => [...]); package MyPod; use base 'OODoc::Format::Pod'; sub chapterCopyrights(@) { my ($self, %args) = @_; my $manual = $args{manual} or confess; my $output = $args{output} or confess; $output->print("\n=head2 COPYRIGHTS\n"); $output->print($manual->name =~ m/abc/ ? <<'FREE' : <<'COMMERICIAL'); This package can be used free of charge, as Perl itself. FREE This package will cost you money. Register if you want to use it. COMMERCIAL $self; } example: adding to a chapter's output $doc->create('MyPod', format_options => [...]); package MyPod; use base 'OODoc::Format::Pod'; sub chapterDiagnostics(@) { my ($self, %args) = @_; $self->SUPER::Diagnostics(%args); my $output = $args{output} or confess; my $manual = $args{manual} or confess; my @extends = $manual->superClasses; $output->print(\nSee also the diagnostics is @extends.\n"); $self; } =head3 Configuring with Template::Magic When using 'pod2' in stead of 'pod' when L is called, the L will be used. It's nearly a drop-in replacement by its default behavior. When you specify your own template file, every thing can be made. See the manual page of Template::Magic. You have to install C to get it to work. example: formatting with template use OODoc; my $doc = OODoc->new(...); $doc->processFiles(...); $doc->prepare; $doc->create(pod2, template => '/some/file', format_options => [ show_subs_index => 'NAMES' , show_option_table => 'NO' ] ) example: format options within template The template van look like this: {chapter NAME} some extra text {chapter OVERLOADED} {chapter METHODS show_option_table NO} The formatting options can be added, however the syntax is quite sensitive: not quotes, comma's and exactly one blank between the strings. =head1 DIAGNOSTICS Error: cannot read prelimary pod from $infn: $! =over 4 =back Error: cannot write final pod to $outfn: $! =over 4 =back Error: cannot write pod manual at $manfile: $! =over 4 =back Error: formatter does not know the version. =over 4 =back Error: formatter has no project name. =over 4 A formatter was created without a name specified for the project at hand. This should be passed with L. =back Error: manual definition requires manual object =over 4 A call to L expects a new manual object (a L), however an incompatible thing was passed. Usually, intended was a call to L or L. =back Warning: missing required chapter $name in $manual =over 4 =back Error: no directory to put pod manual for $name in =over 4 =back Error: no package name for pod production =over 4 =back Error: no package name for pod production =over 4 =back Error: no working directory specified. =over 4 The formatter has to know where the output can be written. This directory must be provided via L, but was not specified. =back Warning: unknown subroutine type $type for $name in $manual =over 4 =back =head1 SEE ALSO This module is part of OODoc distribution version 1.03, built on March 14, 2008. Website: F =head1 LICENSE Copyrights 2003-2008 by Mark Overmeer. For other contributors see ChangeLog. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F