.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" 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 "PPIx::Regexp::Util 3pm" .TH PPIx::Regexp::Util 3pm "2023-03-05" "perl v5.36.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" PPIx::Regexp::Util \- Utility functions for PPIx::Regexp; .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 6 \& use PPIx::Regexp::Util qw{ _\|_instance }; \& . \& . \& . \& _\|_instance( $foo, \*(AqBar\*(Aq ) \& or die \*(Aq$foo is not a Bar\*(Aq; .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module contains utility functions for PPIx::Regexp which it is convenient to centralize. .PP Double-underscore subroutines are \fBprivate\fR to the \f(CW\*(C`PPIx\-Regexp\*(C'\fR package. Their documentation is provided for the author's convenience only, and they are subject to change without notice. \fICaveat user.\fR .PP This module exports nothing by default. .SH "SUBROUTINES" .IX Header "SUBROUTINES" This module can export the following subroutines: .SS "is_ppi_regexp_element" .IX Subsection "is_ppi_regexp_element" .Vb 2 \& is_ppi_regexp_element( $elem ) \& and print "$elem is a regexp of some sort\en"; .Ve .PP This subroutine is public and supported. .PP This subroutine takes as its argument a PPI::Element. It returns a true value if the argument represents a regular expression of some sort, and a false value otherwise. .SS "_\|_instance" .IX Subsection "__instance" .Vb 2 \& _\|_instance( $foo, \*(AqBar\*(Aq ) \& and print \*(Aq$foo isa Bar\*(Aq, "\en"; .Ve .PP This subroutine is \fBprivate\fR to the \f(CW\*(C`PPIx\-Regexp\*(C'\fR package. .PP This subroutine returns true if its first argument is an instance of the class specified by its second argument. Unlike \f(CW\*(C`UNIVERSAL::isa\*(C'\fR, the result is always false unless the first argument is a reference. .SS "_\|_is_ppi_regexp_element" .IX Subsection "__is_ppi_regexp_element" .Vb 2 \& _\|_is_ppi_regexp_element( $elem ) \& and print "$elem is a regexp of some sort\en"; .Ve .PP This subroutine is \fBprivate\fR to the \f(CW\*(C`PPIx\-Regexp\*(C'\fR package. .PP This is a synonym for \fBis_ppi_regexp_element()\fR, and is deprecated in favor of it. If called, it will complain via \&\f(CW\*(C`Carp::cluck()\*(C'\fR and then \f(CW\*(C`goto &is_ppi_regexp_element\*(C'\fR. .SS "_\|_merge_perl_requirements" .IX Subsection "__merge_perl_requirements" This subroutine is \fBprivate\fR to the \f(CW\*(C`PPIx\-Regexp\*(C'\fR package. .PP This subroutine merges perl requirements as returned by the various \&\f(CW\*(C`_\|_perl_requirements()\*(C'\fR methods. .SS "_\|_ns_can" .IX Subsection "__ns_can" This subroutine is \fBprivate\fR to the \f(CW\*(C`PPIx\-Regexp\*(C'\fR package. .PP This method is analogous to \f(CW\*(C`can()\*(C'\fR, but returns a reference to the code only if it is actually implemented by the invoking name space. .SS "_\|_post_rebless_error" .IX Subsection "__post_rebless_error" This method is \fBprivate\fR to the \f(CW\*(C`PPIx\-Regexp\*(C'\fR package. The intended use is to alias it to \f(CW\*(C`_\|_PPIX_ELEM_\|_post_reblessing()\*(C'\fR. .PP It takes arguments as name/value pairs. Argument \f(CW\*(C`{error}\*(C'\fR is the error message; if it is omitted you get a warning with stack trace. Argument \&\f(CW\*(C`{explanation}\*(C'\fR defaults to \f(CW\*(C`{error}\*(C'\fR. .PP It returns the number of errors to add to the parse. .SS "raw_width" .IX Subsection "raw_width" This public method returns the minimum and maximum width matched by the element before taking into account such details as what the element actually is and how it is quantified. .PP This implementation is appropriate to things that match exactly one character \*(-- i.e. it returns \f(CW\*(C`( 1, 1 )\*(C'\fR. .SS "_\|_to_ordinal_en" .IX Subsection "__to_ordinal_en" This subroutine is \fBprivate\fR to the \f(CW\*(C`PPIx\-Regexp\*(C'\fR package. .PP This subroutine takes as its argument an integer and returns a string representing its ordinal in English. For example .PP .Vb 2 \& say _\|_to_ordinal_en( 17 ); \& # 17th .Ve .SS "width" .IX Subsection "width" .Vb 1 \& my ( $min_wid, $max_wid ) = $self\->width(); .Ve .PP This public method (well, mixin) returns the minimum and maximum width of the text matched by the element. .PP Elements which import this method must also implement a \f(CW\*(C`raw_width()\*(C'\fR method which returns the unquantified width of the element. .SH "EXPORT TAGS" .IX Header "EXPORT TAGS" The following export tags are defined by this module. All are private to the \f(CW\*(C`PPIx\-Regexp\*(C'\fR package unless otherwise documented. .SS "all" .IX Subsection "all" This tag exports everything exportable by this module. .SS "width_one" .IX Subsection "width_one" This tag is appropriate to an element which, when unquantified, matches exactly one character. It exports \f(CW\*(C`raw_width()\*(C'\fR and \f(CW\*(C`width()\*(C'\fR. .SH "SEE ALSO" .IX Header "SEE ALSO" Params::Util, which I recommend, but in the case of \&\f(CW\*(C`PPIx::Regexp\*(C'\fR I did not want to introduce a dependency on an \s-1XS\s0 module when all I really wanted was the function of that module's \&\f(CW\*(C`_INSTANCE()\*(C'\fR subroutine. .SH "SUPPORT" .IX Header "SUPPORT" Support is by the author. Please file bug reports at , , or in electronic mail to the author. .SH "AUTHOR" .IX Header "AUTHOR" Thomas R. Wyant, \s-1III\s0 \fIwyant at cpan dot org\fR .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (C) 2010\-2023 by Thomas R. Wyant, \s-1III\s0 .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl 5.10.0. For more details, see the full text of the licenses in the directory \s-1LICENSES.\s0 .PP This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.