use strict;
use warnings;
package Data::InputMonster::Util::Catalyst;
{
$Data::InputMonster::Util::Catalyst::VERSION = '0.005';
}
# ABSTRACT: InputMonster sources for common Catalyst sources
use Carp ();
use Sub::Exporter::Util qw(curry_method);
use Sub::Exporter -setup => {
exports => {
form_param => curry_method,
body_param => curry_method,
query_param => curry_method,
session_entry => curry_method,
}
};
sub form_param {
my ($self, $field_name) = @_;
sub {
my $field_name = defined $field_name ? $field_name : $_[2]{field_name};
return $_[1]->req->params->{ $field_name };
}
}
sub body_param {
my ($self, $field_name) = @_;
sub {
my $field_name = defined $field_name ? $field_name : $_[2]{field_name};
return $_[1]->req->body_params->{ $field_name };
}
}
sub query_param {
my ($self, $field_name) = @_;
sub {
my $field_name = defined $field_name ? $field_name : $_[2]{field_name};
return $_[1]->req->query_params->{ $field_name };
}
}
sub session_entry {
my ($self, $locator) = @_;
require Data::InputMonster::Util;
my $digger = Data::InputMonster::Util->dig($locator);
return sub {
my ($monster, $input, $arg) = @_;
$monster->$digger($input->session, $arg);
};
}
q{$C IS FOR CATALSYT, THAT'S GOOD ENOUGH FOR ME};
__END__
=pod
=encoding UTF-8
=head1 NAME
Data::InputMonster::Util::Catalyst - InputMonster sources for common Catalyst sources
=head1 VERSION
version 0.005
=head1 DESCRIPTION
This module exports a bunch of routines to make it easy to use
Data::InputMonster with Catalyst. Each method, below, is also available as an
exported subroutine, through the magic of Sub::Exporter.
These sources will expect to receive the Catalyst object (C<$c>) as the
C<$input> argument to the monster's C<consume> method.
=head1 METHODS
=head2 form_param
my $source = form_param($field_name);
This source will look for form parameters (with C<< $c->req->params >>) with
the given field name.
=head2 body_param
my $source = body_param($field_name);
This source will look for form parameters (with C<< $c->req->body_params >>)
with the given field name.
=head2 query_param
my $source = query_param($field_name);
This source will look for form parameters (with C<< $c->req->query_params >>)
with the given field name.
=head2 session_entry
my $source = session_entry($locator);
This source will look for an entry in the session for the given locator, using
the C<dig> utility from L<Data::InputMonster::Util>.
=head1 AUTHOR
Ricardo SIGNES <rjbs@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Ricardo SIGNES.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut