App-Framework
view release on metacpan or search on metacpan
lib/App/Framework/Feature/Pod.pm view on Meta::CPAN
package App::Framework::Feature::Pod ;
=head1 NAME
App::Framework::Feature::Pod - Application documentation
=head1 SYNOPSIS
# Data feature is loaded by default as if the script contained:
use App::Framework '+Pod' ;
=head1 DESCRIPTION
Used by the application framework to create pod-based man pages and help.
=cut
use strict ;
use Carp ;
our $VERSION = "1.002" ;
#============================================================================================
# USES
#============================================================================================
use Pod::Usage ;
use App::Framework::Feature ;
use App::Framework::Base ;
#============================================================================================
# OBJECT HIERARCHY
#============================================================================================
our @ISA = qw(App::Framework::Feature) ;
#============================================================================================
# GLOBALS
#============================================================================================
my $POD_HEAD = "=head" ;
my $POD_OVER = "=over" ;
my %FIELDS = (
) ;
=head2 ADDITIONAL COMMAND LINE OPTIONS
This feature adds the following additional command line options to any application:
=over 4
=item B<-help> - show help
Displays brief help message then exits
=item B<-man> - show full man pages
Displays the application's full man pages then exits
=item B<-man-dev> - show full developer man pages
Displays the application's full developer man pages then exits. Developer man pages contain extra
information and is intended for the application developer (rather than the end user).
=item B<-pod> - show man pages as pod [I<developer use>]
Outputs the full pod text.
=back
=cut
lib/App/Framework/Feature/Pod.pm view on Meta::CPAN
) ;
#$this->debug(2);
return($this) ;
}
#============================================================================================
=back
=head2 CLASS METHODS
=over 4
=cut
#============================================================================================
#-----------------------------------------------------------------------------
=item B< init_class([%args]) >
Initialises the Pod object class variables.
=cut
sub init_class
{
my $class = shift ;
my (%args) = @_ ;
# Add extra fields
$class->add_fields(\%FIELDS, \%args) ;
# init class
$class->SUPER::init_class(%args) ;
}
#============================================================================================
=back
=head2 OBJECT METHODS
=over 4
=cut
#============================================================================================
#----------------------------------------------------------------------------
=item B<application_entry()>
Called by the application framework at the start of the application.
This method checks for the user specifying any of the options described above (see L</ADDITIONAL COMMAND LINE OPTIONS>) and handles
them if so.
=cut
sub application_entry
{
my $this = shift ;
$this->_dbg_prt(["application_entry()\n"]) ;
## Handle special options
my $app = $this->app ;
my %opts = $app->options() ;
$this->_dbg_prt(["pod options=",\%opts]) ;
if ($opts{'man'} || $opts{'help'})
{
$this->_dbg_prt(["pod man page=$opts{'man'} \n"]) ;
my $type = $opts{'man'} ? 'man' : 'help' ;
$app->usage($type) ;
$app->exit(0) ;
}
if ($opts{'man-dev'})
{
$app->usage('man-dev') ;
$app->exit(0) ;
}
if ($opts{'pod'})
{
print $this->pod() ;
$app->exit(0) ;
}
}
#----------------------------------------------------------------------------
=item B<pod([$developer])>
Return full pod of application
If the optional $developer flag is set, returns application developer biased information
=cut
sub pod
{
my $this = shift ;
my ($developer) = @_ ;
my $pod =
$this->pod_head($developer) .
$this->pod_args($developer) .
$this->pod_options($developer) .
$this->pod_description($developer) .
"\n=cut\n" ;
return $pod ;
( run in 0.798 second using v1.01-cache-2.11-cpan-e1769b4cff6 )