[PATCH] Drop Regexp-Copy dependency by switching from Storable::dclone to Clone::clone

Niko Tyni ntyni at debian.org
Sat May 15 19:10:06 UTC 2010


Regexp::Copy only seems used to get Storable to support qr// objects.

Also, it looks like Storable is mostly needed for its dclone()
function. There's similar functionality in the Clone module, and
Storable::dclone is allegedly "slower, but more flexible".

Naively replace all uses of Storable::dclone() with Clone::clone()
and drop the Regexp::Copy use altogether.

http://bugs.debian.org/580328

[rt.cpan.org #57390]
---
 lib/HTML/FormFu.pm                     |    5 ++---
 lib/HTML/FormFu/Constraint.pm          |    4 ++--
 lib/HTML/FormFu/Constraint/Set.pm      |    4 ++--
 lib/HTML/FormFu/Constraint/_others.pm  |    4 ++--
 lib/HTML/FormFu/Element.pm             |    8 ++++----
 lib/HTML/FormFu/Element/Block.pm       |    4 ++--
 lib/HTML/FormFu/Element/Multi.pm       |    8 ++++----
 lib/HTML/FormFu/Element/_Field.pm      |    8 ++++----
 lib/HTML/FormFu/Element/_Group.pm      |    6 +++---
 lib/HTML/FormFu/Element/reCAPTCHA.pm   |    2 +-
 lib/HTML/FormFu/Filter/HTMLScrubber.pm |    4 ++--
 lib/HTML/FormFu/MultiForm.pm           |    7 ++++---
 lib/HTML/FormFu/ObjectUtil.pm          |   14 +++++++-------
 t/deprecated/element_defaults.t        |    4 ++--
 t/form/default_args.t                  |    4 ++--
 15 files changed, 43 insertions(+), 43 deletions(-)

diff --git a/lib/HTML/FormFu.pm b/lib/HTML/FormFu.pm
index 5e16f16..ec3cd0a 100644
--- a/lib/HTML/FormFu.pm
+++ b/lib/HTML/FormFu.pm
@@ -38,8 +38,7 @@ use HTML::FormFu::Util qw(
 use List::Util qw( first );
 use List::MoreUtils qw( any none uniq );
 use Scalar::Util qw( blessed refaddr reftype weaken );
-use Storable qw( dclone );
-use Regexp::Copy;
+use Clone;
 use Carp qw( croak );
 
 use overload (
@@ -1115,7 +1114,7 @@ sub _single_output_processor {
         $arg = { type => $arg };
     }
     elsif ( ref $arg eq 'HASH' ) {
-        $arg = dclone($arg);
+        $arg = Clone::clone($arg);
     }
     else {
         croak 'invalid args';
diff --git a/lib/HTML/FormFu/Constraint.pm b/lib/HTML/FormFu/Constraint.pm
index b4d86e9..2f725c9 100644
--- a/lib/HTML/FormFu/Constraint.pm
+++ b/lib/HTML/FormFu/Constraint.pm
@@ -12,7 +12,7 @@ use HTML::FormFu::Util qw(
 use List::MoreUtils qw( any );
 use List::Util qw( first );
 use Scalar::Util qw( reftype blessed );
-use Storable qw( dclone );
+use Clone;
 use Carp qw( croak );
 
 __PACKAGE__->mk_accessors(qw( only_on_reps ));
@@ -229,7 +229,7 @@ sub clone {
     my $clone = $self->next::method(@_);
 
     if ( defined( my $when = $self->when ) ) {
-        $clone->when( dclone $when );
+        $clone->when( Clone::clone $when );
     }
 
     return $clone;
diff --git a/lib/HTML/FormFu/Constraint/Set.pm b/lib/HTML/FormFu/Constraint/Set.pm
index 1a4fd7c..b2ff35b 100644
--- a/lib/HTML/FormFu/Constraint/Set.pm
+++ b/lib/HTML/FormFu/Constraint/Set.pm
@@ -4,7 +4,7 @@ use strict;
 use base 'HTML::FormFu::Constraint';
 use Class::C3;
 
-use Storable qw( dclone );
+use Clone;
 
 __PACKAGE__->mk_accessors(qw( set ));
 
@@ -26,7 +26,7 @@ sub clone {
     my $clone = $self->next::method(@_);
 
     if ( $self->set ) {
-        $clone->set( dclone $self->set );
+        $clone->set( Clone::clone $self->set );
     }
 
     return $clone;
diff --git a/lib/HTML/FormFu/Constraint/_others.pm b/lib/HTML/FormFu/Constraint/_others.pm
index 6abbdae..5f3fa5a 100644
--- a/lib/HTML/FormFu/Constraint/_others.pm
+++ b/lib/HTML/FormFu/Constraint/_others.pm
@@ -9,7 +9,7 @@ use HTML::FormFu::Util qw(
     debug
 );
 use List::MoreUtils qw( any none );
-use Storable qw( dclone );
+use Clone;
 
 __PACKAGE__->mk_item_accessors( qw(
         attach_errors_to_base
@@ -115,7 +115,7 @@ sub clone {
     my $clone = $self->next::method(@_);
 
     if ( ref $self->others ) {
-        $clone->others( dclone $self->others );
+        $clone->others( Clone::clone $self->others );
     }
 
     return $clone;
diff --git a/lib/HTML/FormFu/Element.pm b/lib/HTML/FormFu/Element.pm
index 7d18d4a..20b6dbb 100644
--- a/lib/HTML/FormFu/Element.pm
+++ b/lib/HTML/FormFu/Element.pm
@@ -24,7 +24,7 @@ use HTML::FormFu::ObjectUtil qw(
 );
 use HTML::FormFu::Util qw( require_class xml_escape );
 use Scalar::Util qw( refaddr reftype weaken );
-use Storable qw( dclone );
+use Clone;
 use Carp qw( croak );
 
 use overload (
@@ -182,11 +182,11 @@ sub clone {
 
     my %new = %$self;
 
-    $new{tt_args} = dclone $self->{tt_args}
+    $new{tt_args} = Clone::clone $self->{tt_args}
         if $self->{tt_args};
 
-    $new{attributes}   = dclone $self->attributes;
-    $new{model_config} = dclone $self->model_config;
+    $new{attributes}   = Clone::clone $self->attributes;
+    $new{model_config} = Clone::clone $self->model_config;
 
     return bless \%new, ref $self;
 }
diff --git a/lib/HTML/FormFu/Element/Block.pm b/lib/HTML/FormFu/Element/Block.pm
index da9ff74..3ed5fc6 100644
--- a/lib/HTML/FormFu/Element/Block.pm
+++ b/lib/HTML/FormFu/Element/Block.pm
@@ -8,7 +8,7 @@ use HTML::FormFu::Constants qw( $EMPTY_STR );
 use HTML::FormFu::ObjectUtil qw( :FORM_AND_BLOCK );
 use HTML::FormFu::Util qw( _get_elements xml_escape process_attrs );
 use List::MoreUtils qw( uniq );
-use Storable qw( dclone );
+use Clone;
 use Carp qw( croak );
 
 __PACKAGE__->mk_item_accessors( qw(
@@ -243,7 +243,7 @@ sub clone {
 
     map { $_->parent($clone) } @{ $clone->_elements };
 
-    $clone->default_args( dclone $self->default_args );
+    $clone->default_args( Clone::clone $self->default_args );
 
     return $clone;
 }
diff --git a/lib/HTML/FormFu/Element/Multi.pm b/lib/HTML/FormFu/Element/Multi.pm
index 7182f02..bf55b26 100644
--- a/lib/HTML/FormFu/Element/Multi.pm
+++ b/lib/HTML/FormFu/Element/Multi.pm
@@ -7,7 +7,7 @@ use Class::C3;
 use HTML::FormFu::Element::_Field qw( :FIELD );
 use HTML::FormFu::Util
     qw( append_xml_attribute xml_escape process_attrs _parse_args _get_elements _filter_components );
-use Storable qw( dclone );
+use Clone;
 
 __PACKAGE__->mk_item_accessors( qw(
         field_filename
@@ -211,9 +211,9 @@ sub clone {
 
     my $clone = $self->next::method(@_);
 
-    $clone->comment_attributes( dclone $self->comment_attributes );
-    $clone->container_attributes( dclone $self->container_attributes );
-    $clone->label_attributes( dclone $self->label_attributes );
+    $clone->comment_attributes( Clone::clone $self->comment_attributes );
+    $clone->container_attributes( Clone::clone $self->container_attributes );
+    $clone->label_attributes( Clone::clone $self->label_attributes );
 
     return $clone;
 }
diff --git a/lib/HTML/FormFu/Element/_Field.pm b/lib/HTML/FormFu/Element/_Field.pm
index 9b1f875..4ebef13 100644
--- a/lib/HTML/FormFu/Element/_Field.pm
+++ b/lib/HTML/FormFu/Element/_Field.pm
@@ -16,7 +16,7 @@ use HTML::FormFu::Util qw(
     process_attrs               _filter_components
 );
 use List::MoreUtils qw( uniq );
-use Storable qw( dclone );
+use Clone;
 use Carp qw( croak );
 use Exporter qw( import );
 
@@ -991,9 +991,9 @@ sub clone {
         map { $_->parent($clone) } @{ $clone->$list };
     }
 
-    $clone->comment_attributes( dclone $self->comment_attributes );
-    $clone->container_attributes( dclone $self->container_attributes );
-    $clone->label_attributes( dclone $self->label_attributes );
+    $clone->comment_attributes( Clone::clone $self->comment_attributes );
+    $clone->container_attributes( Clone::clone $self->container_attributes );
+    $clone->label_attributes( Clone::clone $self->label_attributes );
 
     return $clone;
 }
diff --git a/lib/HTML/FormFu/Element/_Group.pm b/lib/HTML/FormFu/Element/_Group.pm
index 3523f98..08de93a 100644
--- a/lib/HTML/FormFu/Element/_Group.pm
+++ b/lib/HTML/FormFu/Element/_Group.pm
@@ -9,7 +9,7 @@ use HTML::FormFu::Util qw( append_xml_attribute literal xml_escape );
 use Exporter qw( import );
 use List::MoreUtils qw( none );
 use Scalar::Util qw( reftype );
-use Storable qw( dclone );
+use Clone;
 use Carp qw( croak );
 
 our @EXPORT_OK = qw( _process_options_from_model );    # used by ComboBox
@@ -363,7 +363,7 @@ sub render_data_non_recursive {
     my ( $self, $args ) = @_;
 
     my $render = $self->next::method( {
-            options => dclone( $self->_options ),
+            options => Clone::clone( $self->_options ),
             $args ? %$args : (),
         } );
 
@@ -426,7 +426,7 @@ sub clone {
 
     my $clone = $self->next::method(@_);
 
-    $clone->_options( dclone $self->_options );
+    $clone->_options( Clone::clone $self->_options );
 
     return $clone;
 }
diff --git a/lib/HTML/FormFu/Element/reCAPTCHA.pm b/lib/HTML/FormFu/Element/reCAPTCHA.pm
index c5975ad..42c2c62 100644
--- a/lib/HTML/FormFu/Element/reCAPTCHA.pm
+++ b/lib/HTML/FormFu/Element/reCAPTCHA.pm
@@ -117,7 +117,7 @@ sub clone {
 
     my $clone = $self->next::method(@_);
 
-    $clone->recaptcha_options( dclone $self->recaptcha_options );
+    $clone->recaptcha_options( Clone::clone $self->recaptcha_options );
 
     return $clone;
 }
diff --git a/lib/HTML/FormFu/Filter/HTMLScrubber.pm b/lib/HTML/FormFu/Filter/HTMLScrubber.pm
index 018273d..b934ed5 100644
--- a/lib/HTML/FormFu/Filter/HTMLScrubber.pm
+++ b/lib/HTML/FormFu/Filter/HTMLScrubber.pm
@@ -4,7 +4,7 @@ use strict;
 use base 'HTML::FormFu::Filter';
 use Class::C3;
 
-use Storable qw( dclone );
+use Clone;
 
 __PACKAGE__->mk_accessors(qw( allow ));
 
@@ -27,7 +27,7 @@ sub clone {
 
     my $clone = $self->next::method(@_);
 
-    $clone->allow( dclone $self->allow )
+    $clone->allow( Clone::clone $self->allow )
         if ref $self->allow;
 
     return $clone;
diff --git a/lib/HTML/FormFu/MultiForm.pm b/lib/HTML/FormFu/MultiForm.pm
index a10d67f..2db2156 100644
--- a/lib/HTML/FormFu/MultiForm.pm
+++ b/lib/HTML/FormFu/MultiForm.pm
@@ -21,7 +21,8 @@ use Carp qw( croak );
 use Crypt::CBC;
 use List::MoreUtils qw( uniq );
 use Scalar::Util qw( blessed refaddr reftype );
-use Storable qw( dclone nfreeze thaw );
+use Storable qw( nfreeze thaw );
+use Clone;
 
 use overload (
     'eq' => sub { refaddr $_[0] eq refaddr $_[1] },
@@ -234,7 +235,7 @@ sub _load_current_form {
 
     my $current_form = HTML::FormFu->new;
 
-    my $current_data = dclone( $self->forms->[ $current_form_num - 1 ] );
+    my $current_data = Clone::clone( $self->forms->[ $current_form_num - 1 ] );
 
     # merge constructor args
     for my $key ( @ACCESSORS, @INHERITED_ACCESSORS,
@@ -363,7 +364,7 @@ sub next_form {
     # is there a next form defined?
     return if $current_form_num >= scalar @{ $self->forms };
 
-    my $form_data = dclone( $self->forms->[$current_form_num] );
+    my $form_data = Clone::clone( $self->forms->[$current_form_num] );
 
     my $next_form = HTML::FormFu->new;
 
diff --git a/lib/HTML/FormFu/ObjectUtil.pm b/lib/HTML/FormFu/ObjectUtil.pm
index f622f9f..6b73697 100644
--- a/lib/HTML/FormFu/ObjectUtil.pm
+++ b/lib/HTML/FormFu/ObjectUtil.pm
@@ -13,7 +13,7 @@ use Data::Visitor::Callback;
 use File::Spec;
 use Scalar::Util qw( refaddr reftype weaken blessed );
 use List::MoreUtils qw( none uniq );
-use Storable qw( dclone );
+use Clone;
 use Carp qw( croak );
 
 our @form_and_block = qw(
@@ -171,7 +171,7 @@ sub _require_element {
         } );
 
     if ( $element->can('default_args') ) {
-        $element->default_args( dclone $self->default_args );
+        $element->default_args( Clone::clone $self->default_args );
     }
 
     # handle default_args
@@ -526,7 +526,7 @@ sub _load_file {
     }
 
     for my $config ( ref $data eq 'ARRAY' ? @$data : $data ) {
-        $self->populate( dclone($config) );
+        $self->populate( Clone::clone($config) );
     }
 
     return;
@@ -631,9 +631,9 @@ sub clone {
     my %new = %$self;
 
     $new{_elements}    = [ map { $_->clone } @{ $self->_elements } ];
-    $new{attributes}   = dclone $self->attributes;
-    $new{tt_args}      = dclone $self->tt_args;
-    $new{model_config} = dclone $self->model_config;
+    $new{attributes}   = Clone::clone $self->attributes;
+    $new{tt_args}      = Clone::clone $self->tt_args;
+    $new{model_config} = Clone::clone $self->model_config;
 
     if ( $self->can('_plugins') ) {
         $new{_plugins} = [ map { $_->clone } @{ $self->_plugins } ];
@@ -641,7 +641,7 @@ sub clone {
 
     $new{languages}
         = ref $self->languages
-        ? dclone $self->languages
+        ? Clone::clone $self->languages
         : $self->languages;
 
     $new{default_args} = $self->default_args;
diff --git a/t/deprecated/element_defaults.t b/t/deprecated/element_defaults.t
index 64a9fb9..1deac8a 100644
--- a/t/deprecated/element_defaults.t
+++ b/t/deprecated/element_defaults.t
@@ -4,7 +4,7 @@ use warnings;
 use Test::More tests => 9;
 
 use HTML::FormFu;
-use Storable qw( dclone );
+use Clone;
 
 my $form = HTML::FormFu->new({ tt_args => { INCLUDE_PATH => 'share/templates/tt/xhtml' } });
 
@@ -23,7 +23,7 @@ _call_element_defaults( $form, {
     } );
 
 # take a deep copy of element_defaults, so we can check they've not been butchered, later
-my $element_defaults = dclone( _call_element_defaults( $form ) );
+my $element_defaults = Clone::clone( _call_element_defaults( $form ) );
 
 $form->populate( {
         elements => [
diff --git a/t/form/default_args.t b/t/form/default_args.t
index 27e83c5..dbfb109 100644
--- a/t/form/default_args.t
+++ b/t/form/default_args.t
@@ -4,7 +4,7 @@ use warnings;
 use Test::More tests => 7;
 
 use HTML::FormFu;
-use Storable qw( dclone );
+use Clone;
 
 my $form = HTML::FormFu->new({ tt_args => { INCLUDE_PATH => 'share/templates/tt/xhtml' } });
 
@@ -31,7 +31,7 @@ $form->default_args( {
 
 # take a deep copy of element_defaults, so we can check they've not been butchered, later
 
-my $default_args = dclone( $form->default_args );
+my $default_args = Clone::clone( $form->default_args );
 
 $form->populate( {
         elements => [
-- 
1.7.1


--MGYHOYXEY6WxJCY8--





More information about the pkg-perl-maintainers mailing list