From ecc30e4944e58e1b02f187c5d445f76a921f3b65 Mon Sep 17 00:00:00 2001 From: "Eric A. Miller" Date: Sun, 8 Jun 2014 21:59:00 -0400 Subject: [PATCH] Add App::Netdisco::Util::ExpandParams a CGI::Expand subclass with Rails like tokenization for parameters passed during DataTables server-side processing. --- Netdisco/Makefile.PL | 1 + .../lib/App/Netdisco/Util/ExpandParams.pm | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 Netdisco/lib/App/Netdisco/Util/ExpandParams.pm diff --git a/Netdisco/Makefile.PL b/Netdisco/Makefile.PL index b6329673..9ffe4408 100644 --- a/Netdisco/Makefile.PL +++ b/Netdisco/Makefile.PL @@ -10,6 +10,7 @@ requires 'AnyEvent::DNS::EtcHosts' => 0; requires 'App::cpanminus' => 1.6108; requires 'App::local::lib::helper' => 0.07; requires 'Archive::Extract' => 0; +requires 'CGI::Expand' => 2.05; requires 'DBD::Pg' => 0; requires 'DBD::SQLite' => 1.37; requires 'DBIx::Class' => 0.08250; diff --git a/Netdisco/lib/App/Netdisco/Util/ExpandParams.pm b/Netdisco/lib/App/Netdisco/Util/ExpandParams.pm new file mode 100644 index 00000000..6fb16655 --- /dev/null +++ b/Netdisco/lib/App/Netdisco/Util/ExpandParams.pm @@ -0,0 +1,39 @@ +package App::Netdisco::Util::ExpandParams; +use base qw/CGI::Expand/; + +use strict; +use warnings; + +sub max_array {0} +sub separator {'.[]'} + +sub split_name { + my $class = shift; + my $name = shift; + $name =~ /^ ([^\[\]\.]+) /xg; + my @segs = $1; + push @segs, ( $name =~ / \G (?: \[ ([^\[\]\.]+) \] ) /xg ); + return @segs; +} + +sub join_name { + my $class = shift; + my ( $first, @segs ) = @_; + return $first unless @segs; + return "$first\[" . join( '][', @segs ) . "]"; +} + +1; + +__END__ + +=head1 NAME + +App::Netdisco::Util::ExpandParams + +=head1 DESCRIPTION + +CGI::Expand subclass with Rails like tokenization for parameters passed +during DataTables server-side processing. + +=cut