NAME
Regexp::Box - store and retrieve regexp via names
SYNOPSIS
$rebox
= Regexp::Box->new(
name
=>
'name of the box'
);
$rebox
->register(
'category/id'
, 0,
qr/\w/
,
'description'
);
$rebox
->register(
'category/id2'
, 0,
sub
{
'\w'
x 3 },
sub
{
sprintf
'description of %s'
,
$_
[0] }
);
unless
(
$_
=~
$rebox
->request(
'category/id'
,
'regexp'
) )
{
warn
"Expected "
,
$rebox
->request(
'category/id'
,
'desc'
);
}
DESCRIPTION
Store and retrieve regexp via names and serve them application wide. My favorite Regexp::Common was somehow to complicated with that particular issue.
METHODS
$rebox = Regexp::Box->new( name => 'name of the box' )
Just give the box a name. Helps when multiple box's have to be handled.
$rebox->register( $id, $exact, $regexp, $desc )
Register a regexp. All arguments are required. The $id
should contain a category path ( i.e. 'net/uri' ). It is used when later retrieved with $rebox->request
. The $exact
is a boolean field that defines if the regexp gets wrapped with '^$' (see $rebox->exact
below). One could use closure/function-pointers as $regexp
or $desc
if some run-time construction would be required (Some flexible Regexp::Common regexp's require that for argument passing. Here some examples:
$rebox
->register(
'category/id'
, 0,
qr//
,
'description'
);
$rebox
->register(
'category/id'
, 0,
sub
{ },
sub
{
'description'
} );
$rebox
->register(
'std/uri'
,
1,
sub
{
$Regexp::Box::RE
{URI}{HTTP}{
-scheme
=>
$_
[1] ||
'HTTP'
} },
sub
{
sprintf
"an uri (default: %s)"
,
$_
[1] ||
'HTTP'
}
);
$field = $rebox->request( $id, $field_name )
Currently 'regexp', 'desc' and 'created', 'exact' as $field_name.
$rebox
->request(
'net/email'
,
'desc'
);
Returns the desc
field of the 'net/email' regexp.
@ids = $rebox->request();
Returns array of $id
of all registered regexps.
$rebox->exact
Wraps a regex internally into '^$'. May be overloaded if its too stupid.
$Regexp::Box::RE
Regexp::Common is heavily used and one could access it via $Regexp::Box::RE
without loading it redundantly.
<& /maslib/delayed.mas, comp => '/maslib/signatures.mas:author_as_pod' &>
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 309:
=back without =over