NAME
File::Spec::PublicationPage - Parse a dated and page numbered archive file name in a system independant way.
SYNOPSIS
use File::Spec::PublicationPage;
($volume, $basepath, $directory,
$startdate, $enddate, $publication,
$publication_title_head, $publication_subtitles, $publication_annotations,
$startpage, $endpage,
$page_title_head, $page_subtitles, $page_annotations,
@extensions) = $obj->splitpath ($filepath);
$publication_title_section = $obj->publication_title_section;
$publication = $obj->publication;
$publication_title_head = $obj->publication_title_head;
$publication_subtitles = $obj->publication_subtitles;
$publication_annotations = $obj->publication_annotations;
$page_title_head = $obj->page_title_head;
$page_subtitles = $obj->page_subtitles;
$page_annotations = $obj->page_annotations;
$page_title_section = $obj->fulltitle;
$pagename = $obj->pagename;
$issuename = $obj->issuename;
$obj = $obj->set_publication ($publication);
$obj = $obj->set_publication_title_head ($publication_title_head);
$obj = $obj->set_publication_subtitles ($publication_subtitles);
$obj = $obj->set_publication_annotations ($publication_annotations);
$obj = $obj->set_page_title_head ($page_title_head);
$obj = $obj->set_page_subtitles ($page_subtitles);
$obj = $obj->set_page_annotations ($page_annotations);
$publication_title_sections = $obj->reset_document_title_section;
$page_title_sections = $obj->reset_page_title_section;
Inheritance
UNIVERSAL
File::Spec::Unix
File::Spec::BaseParse
File::Spec::Dated
File::Spec::DatedPage
File::Spec::PublicationPage
Description
Further splits a pathname string from what it's parent classes have already done. Using the example publication_title_section string, XMAS-Title-Subtitle-note, it will be broken down further as:
publication: XMAS
publication_title_head: Title
publication_subtitles: Subtitle
publication_annotations: note
page_title_head: undef
page_subtitles: undef
page_annotations: undef
Ordering is used in this parsing. The first "-" delimited element in the name_body is the publication name; the second is the main title of the article; the third and remaining items are subtitles of the article unless the first character is lower case, in which case it is taken to be a local annotation.
Such annotations are useful for adding key words to the file name so that Unix locate and find will be more useful. One might have added "-iranStudentRebellion" if the publication or page title did not mention Iran and one wished to be able to locate all files with information about Iran.
Examples
use File::Spec::PublicationPage;
my $baz = File::Spec::PublicationPage->new;
my @list = $baz->splitpath
("/my/base/Cards/19901225-XMAS-Title-Subtitle-note.tar.gz");
my $foo = File::Spec::PublicationPage->new
("/my/base/Cards/19901225-XMAS-Title-Subtitle-note.tar.gz");
my $startpage = $foo->startpage;
my $endpage = $foo->endpage;
my $pages = $foo->pages;
my $pagename = $foo->pagename;
my $publication = $foo->publication;
my $pubsection = $foo->publication_title_section;
my $dtitle_head = $foo->publication_title_head;
my $dsubtitle = $foo->publication_subtitles;
my $dnotes = $foo->publication_annotations;
my $pgsection = $foo->fulltitle;
my $ptitle_head = $foo->page_title_head;
my $psubtitle = $foo->page_subtitles;
my $pnotes = $foo->page_annotations;
$foo->set_publication ("JournalOfIrreproduceableResults");
$foo->set_publication_title_head ("QuantumBubbling" );
$foo->set_publication_subtitles ("ThePintEffect");
$foo->set_publication_annotations ("allTheTimeInTheworldInAGuinness");
$foo->set_page_title_head ("TheCat );
$foo->set_page_subtitles ("DeadOrAlive");
$foo->set_page_annotations ("whatWillPetaSay");
my $docsection = $foo->reset_document_title_section;
my $pgsection = $foo->reset_page_title_section;
my $name_body = $foo->reset_name_body;
my $name = $foo->reset_name;
my $filename = $foo->reset_filename;
my $filepath = $foo->reset_pathname;
my @parts = $foo->reparse;
Class Variables
None.
Instance Variables
publication Name of the publication
publication_title_head The primary title of the whole document.
publication_subtitles Subtitles of the whole document.
publication_annotations Annotations on the whole document.
page_title_head The primary title of the page.
page_subtitles Subtitles of the page.
page_annotations Annotations on the page.
Class Methods
None.
Instance Methods
- $page_title_section = $obj->fulltitle
-
Return a $page_full_title string , eg "MainTitle", "MainTitle-SubtitleOne-SubtitleTwo". "MainTitle-OnlySubtitle-firstNote" or perhaps "MainTitle-firstNote-secondNote".
undef if there is no page title information associated with this filespec.
- $issuename = $obj->issuename
-
Return a $issuename string , eg "20021225-NewScientist".
undef if there the date string or publication name is unavailable. Both are required.
- $page_annotations = $obj->page_annotations
-
Return the page annotations string.
- $page_subtitles = $obj->page_subtitles
-
Return the page subtitles string.
- $page_title_head = $obj->page_title_head
-
Return the page main title string.
- $pagename = $obj->pagename
-
Return the page name string, eg "20021225-NewScientist-p010" or undef if the date string, publication name or pageid string is unavailable. All are required.
- $publication = $obj->publication
-
Return the publication name string.
- $publication_annotations = $obj->publication_annotations
-
Return the publication annotations string.
- $publication_subtitles = $obj->publication_subtitles
-
Return the publication subtitles string.
- $publication_title_head = $obj->publication_title_head
-
Return the publication main title string.
- $publication_title_section = $obj->publication_title_section
-
Return the publication_title_section string:
"publication-title-head publication-subtitles publications-annotations"
or whatever portion is available. Return undef if there is none.
- $publication_title_sections = $obj->reset_document_title_section
-
Regenerate the document_title_section from pieces:
publication + publication_title_head + publication_subtitles + publication_annotations -> document_title_section
- $page_title_sections = $obj->reset_page_title_section
-
Regenerate the page_title_section from pieces:
page_title_head + page_subtitles + page_annotations -> page_title_section
- $obj = $obj->set_publication ($publication)
-
Unconditionally set the publication name.
- $obj = $obj->set_publication_annotations ($publication_annotations)
-
Unconditionally set the publication annotations.
- $obj = $obj->set_publication_subtitles ($publication_subtitles)
-
Unconditionally set the publication subtitles.
- $obj = $obj->set_publication_title_head ($publication_title_head)
-
Unconditionally set the publication_title_head.
- $obj = $obj->set_page_annotations ($page_annotations)
-
Unconditionally set the page annotations.
- $obj = $obj->set_page_subtitles ($page_subtitles)
-
Unconditionally set the page subtitles.
- $obj = $obj->set_page_title_head ($page_title_head)
-
Unconditionally set the page_title_head.
- ($volume, $basepath, $directory, $startdate, $enddate, $publication, $publication_title_head, $publication_subtitles, $publication_annotations, $startpage, $endpage, $page_title_head, $page_subtitles, $page_annotations, @extensions) = $obj->splitpath ($filepath)
-
Override and chain the parent method. Parses the filename into:
{firstdate{-lastdate}}{-publication {-publication_title_head}{-publication_subtitles}{-publication_annotations}} {-startpage{-endpage}} {-page_title_head}{-page_subtitles}{-page_annotations}}{.extensions}
Returns all the elements of the pathname as a list. Completely reinitializes the object for the name $filepath.
Private Class Methods
None.
Private Instance Methods
- $obj = $obj->_init
-
Internal initializer.
This method is for the subclass initializer chaining and should not be used otherwise.
KNOWN BUGS
See TODO.
SEE ALSO
DMA::FSM, Fault::DebugPrinter, File::Spec::DatedPage
AUTHOR
Dale Amon <amon@vnl.com>
2 POD Errors
The following errors were encountered while parsing the POD:
- Around line 566:
=back doesn't take any parameters, but you said =back 4
- Around line 583:
=back doesn't take any parameters, but you said =back 4