summaryrefslogtreecommitdiff
path: root/lib/Params/Validate/XS.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Params/Validate/XS.pm')
-rw-r--r--lib/Params/Validate/XS.pm51
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;