.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Exporter::Declare::Specs 3pm" .TH Exporter::Declare::Specs 3pm "2021-01-05" "perl v5.32.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Exporter::Declare::Specs \- Import argument parser for Exporter::Declare .SH "DESCRIPTION" .IX Header "DESCRIPTION" Import arguments can get complicated. All arguments are assumed to be exports unless they have a \- or : prefix. The prefix may denote a tag, a boolean option, or an option that takes the next argument as a value. In addition almost all these can be negated with the ! prefix. .PP This class takes care of parsing the import arguments and generating data structures that can be used to find what the exporter needs to know. .SH "METHODS" .IX Header "METHODS" .ie n .IP "$class\->new( $package, @args )" 4 .el .IP "\f(CW$class\fR\->new( \f(CW$package\fR, \f(CW@args\fR )" 4 .IX Item "$class->new( $package, @args )" Create a new instance and parse \f(CW@args\fR. .ie n .IP "$specs\->\fBpackage()\fR" 4 .el .IP "\f(CW$specs\fR\->\fBpackage()\fR" 4 .IX Item "$specs->package()" Get the name of the package that should do the exporting. .ie n .IP "$hashref = $specs\->\fBconfig()\fR" 4 .el .IP "\f(CW$hashref\fR = \f(CW$specs\fR\->\fBconfig()\fR" 4 .IX Item "$hashref = $specs->config()" Get the configuration hash, All specified options and tags are the keys. The value will be true/false/undef for tags/boolean options. For options that take arguments the value will be that argument. When a config hash is provided to a tag it will be the value. .ie n .IP "@names = $specs\->\fBarguments()\fR" 4 .el .IP "\f(CW@names\fR = \f(CW$specs\fR\->\fBarguments()\fR" 4 .IX Item "@names = $specs->arguments()" .PD 0 .ie n .IP "@names = $specs\->\fBoptions()\fR" 4 .el .IP "\f(CW@names\fR = \f(CW$specs\fR\->\fBoptions()\fR" 4 .IX Item "@names = $specs->options()" .ie n .IP "@names = $specs\->\fBtags()\fR" 4 .el .IP "\f(CW@names\fR = \f(CW$specs\fR\->\fBtags()\fR" 4 .IX Item "@names = $specs->tags()" .PD Get the argument, option, or tag names that were specified for the import. .ie n .IP "$hashref = $specs\->\fBargument_info()\fR" 4 .el .IP "\f(CW$hashref\fR = \f(CW$specs\fR\->\fBargument_info()\fR" 4 .IX Item "$hashref = $specs->argument_info()" Get the arguments that were specified for the import. The key is the name of the argument and the value is what the user supplied during import. .ie n .IP "$hashref = $specs\->\fBoption_info()\fR" 4 .el .IP "\f(CW$hashref\fR = \f(CW$specs\fR\->\fBoption_info()\fR" 4 .IX Item "$hashref = $specs->option_info()" Get the options that were specified for the import. The key is the name of the user supplied option and the value will evaluate to true. .ie n .IP "$hashref = $specs\->\fBtag_info()\fR" 4 .el .IP "\f(CW$hashref\fR = \f(CW$specs\fR\->\fBtag_info()\fR" 4 .IX Item "$hashref = $specs->tag_info()" Get the values associated with the tags used during import. The key is the name of the tag and the value is an array ref containing the values given to \fBexport_tag()\fR for the associated name. .ie n .IP "$hashref = $specs\->\fBexports()\fR" 4 .el .IP "\f(CW$hashref\fR = \f(CW$specs\fR\->\fBexports()\fR" 4 .IX Item "$hashref = $specs->exports()" Get the exports hash. The keys are names of the exports. Values are an array containing the export, item specific config hash, and arguments array. This is generally not intended for direct consumption. .ie n .IP "$arrayref = $specs\->\fBexcludes()\fR" 4 .el .IP "\f(CW$arrayref\fR = \f(CW$specs\fR\->\fBexcludes()\fR" 4 .IX Item "$arrayref = $specs->excludes()" Get the arrayref containing the names of all excluded exports. .ie n .IP "$specs\->export( $package )" 4 .el .IP "\f(CW$specs\fR\->export( \f(CW$package\fR )" 4 .IX Item "$specs->export( $package )" Do the actual exporting. All exports will be injected into \f(CW$package\fR. .ie n .IP "$specs\->add_export( $name, $value )" 4 .el .IP "\f(CW$specs\fR\->add_export( \f(CW$name\fR, \f(CW$value\fR )" 4 .IX Item "$specs->add_export( $name, $value )" .PD 0 .ie n .IP "$specs\->add_export( $name, $value, \e%config )" 4 .el .IP "\f(CW$specs\fR\->add_export( \f(CW$name\fR, \f(CW$value\fR, \e%config )" 4 .IX Item "$specs->add_export( $name, $value, %config )" .PD Add an export. Name is required, including sigil. Value is required, if it is a sub it will be blessed as a ::Sub, otherwise blessed as a ::Variable. .Sp .Vb 1 \& $specs\->add_export( \*(Aq&foo\*(Aq => sub { return \*(Aqfoo\*(Aq }); .Ve .SH "AUTHORS" .IX Header "AUTHORS" Chad Granum exodist7@gmail.com .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (C) 2010 Chad Granum .PP Exporter-Declare is free software; Standard perl licence. .PP Exporter-Declare is distributed in the hope that it will be useful, but \&\s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of \s-1MERCHANTABILITY\s0 or \&\s-1FITNESS FOR A PARTICULAR PURPOSE.\s0 See the license for more details.