use
vars
qw($VERSION $AUTOLOAD @ISA @EXPORT)
;
$VERSION
=
'5.32'
;
@ISA
=
qw(Exporter)
;
@EXPORT
=
qw(
ddmmyy valid_ddmmyy match_ddmmyy
url valid_url match_url
)
;
sub
ddmmyy {
my
%params
=
@_
;
return
sub
{
my
$self
=
shift
;
$self
->set_current_constraint_name(
'ddmmyy'
);
$self
->valid_ddmmyy(\
%params
);
}
}
my
%mon
= (
1
=>31,
2
=>29,
3
=>31,
4
=>30,
5
=>31,
6
=>30,
7
=>31,
8
=>31,
9
=>30,
10
=>31,
11
=>30,
12
=>31 );
sub
valid_ddmmyy {
my
(
$self
,
$text
) =
@_
;
return
0
unless
(
$text
);
my
@part
=
$text
=~ m< ^ (\d{2,2}) [-/.] (\d{2,2}) [-/.] (\d{4,4}) $ >x;
return
0
unless
(
@part
== 3);
return
0
if
(
$part
[2] < 1900 &&
$part
[0] > 9999);
return
0
if
(
$part
[1] < 1 &&
$part
[0] > 12);
return
0
if
(
$part
[0] < 1 &&
$part
[0] >
$mon
{
$part
[1]});
return
0
if
(
$part
[0] > 28 &&
$part
[1] == 2 &&
$part
[2] % 4 != 0);
return
1;
}
sub
match_ddmmyy {
my
(
$self
,
$text
) =
@_
;
return
unless
defined
$text
;
return
$text
if
(
$text
=~ m< ^ \d{2,2} [-/.] \d{2,2} [-/.] \d{4,4} $ >x);
return
;
}
sub
url {
my
%params
=
@_
;
return
sub
{
my
$self
=
shift
;
$self
->set_current_constraint_name(
'url'
);
$self
->valid_url(\
%params
);
}
}
sub
match_url {
my
(
$self
,
$text
) =
@_
;
return
unless
(
$text
);
my
(
$url
) =
$text
=~ /^(
$settings
{urlregex})$/x;
return
unless
(
$url
);
$text
=
'http://'
.
$text
unless
(
$text
=~ m!^\w+://!);
return
$text
;
}
sub
AUTOLOAD {
my
$name
=
$AUTOLOAD
;
no
strict
qw/refs/
;
$name
=~ m/^(.*::)(valid_|RE_)(.*)/;
my
(
$pkg
,
$prefix
,
$sub
) = ($1,$2,$3);
if
((
defined
$prefix
) and (
$prefix
eq
'valid_'
)) {
return
defined
&{
$pkg
.
'match_'
.
$sub
}(
@_
) ? 1 : 0;
}
}
1;