NAME
App::FuguWeb::Manual - one manual source, and what the site asks of it
SYNOPSIS
use App::FuguWeb::Manual;
my $manual = App::FuguWeb::Manual->from_mdoc('man/fugu/Daemon.3p',
$group);
$manual->name; # Fugu::Daemon
$manual->section; # 3p
$manual->page; # Fugu::Daemon.3p.html
$manual->staged_name; # Fugu::Daemon.3p
$manual->description; # read from the source
DESCRIPTION
A manual is an mdoc(7) page or a POD sidecar. The class answers the five questions that the build and the index ask about one: where it is, what it is called, which section it belongs to, which page it becomes, and what it is for.
The class never retypes a description. The source page is the only copy, and "description" reads it.
App::FuguWeb::Config::Group builds these objects. A caller normally asks a group for its manuals instead of constructing one.
CONSTRUCTORS
from_mdoc
App::FuguWeb::Manual->from_mdoc($path, $group)
One mdoc source. The file extension gives the section, and the group namespace prefixes the name, so man/fugu/Daemon.3p is the source of Fugu::Daemon(3p).
from_pod
App::FuguWeb::Manual->from_pod($path, $group, $module_root)
One POD sidecar. The section is always 3p. The name is the path below $module_root, with the separators turned into the Perl ones, so lib/App/OpenHAP/Tasmota/Heater.pod is the source of App::OpenHAP::Tasmota::Heater(3p).
$path and $module_root must be paths of the same kind: both absolute, or both relative to the same directory.
METHODS
path, name, section
The source, the manual name, and its section.
is_pod
Whether the source is a POD sidecar. A sidecar goes through pod2man first; an mdoc source does not.
page
The name of the page in the output directory: <name>.<section>.html.
staged_name
The name that the mdoc staging directory needs: <name>.<section>.
mandoc reads a .Xr target as a local link only when a file named %N.%S sits in its working directory. That is why man/fugu/Daemon.3p stages as Fugu::Daemon.3p and not under its own file name.
description
The one-line description, read from the source.
An mdoc page gives the argument of its first .Nd macro. A POD sidecar gives the text after Module - on the first non-blank line below =head1 NAME. The method returns undef when the source carries neither, and reads the file once.
SEE ALSO
App::FuguWeb, App::FuguWeb::Config, App::FuguWeb::Index, mandoc(1)
AUTHOR
Dick Olsson <hi@senzilla.io>