diff options
Diffstat (limited to 'lib/Params/Validate/XS.pm')
-rw-r--r-- | lib/Params/Validate/XS.pm | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/Params/Validate/XS.pm b/lib/Params/Validate/XS.pm new file mode 100644 index 0000000..256131d --- /dev/null +++ b/lib/Params/Validate/XS.pm @@ -0,0 +1,51 @@ +package Params::Validate::XS; + +use strict; +use warnings; + +our $VERSION = '1.20'; + +use Carp; + +my $default_fail = sub { + Carp::confess( $_[0] ); +}; + +{ + my %defaults = ( + ignore_case => 0, + strip_leading => 0, + allow_extra => 0, + on_fail => $default_fail, + stack_skip => 1, + normalize_keys => undef, + ); + + *set_options = \&validation_options; + + sub validation_options { + my %opts = @_; + + my $caller = caller; + + foreach ( keys %defaults ) { + $opts{$_} = $defaults{$_} unless exists $opts{$_}; + } + + $Params::Validate::OPTIONS{$caller} = \%opts; + } + + use XSLoader; + XSLoader::load( + __PACKAGE__, + exists $Params::Validate::XS::{VERSION} + ? ${ $Params::Validate::XS::{VERSION} } + : (), + ); +} + +sub _check_regex_from_xs { + return ( defined $_[0] ? $_[0] : '' ) =~ /$_[1]/ ? 1 : 0; +} + +1; |