From 0e8df6b61bc37a97b87bc0c95ba818495b3b5d00 Mon Sep 17 00:00:00 2001 From: fbriere Date: Mon, 8 May 2006 20:32:47 +0000 Subject: [PATCH] Make get_remap_fields() non-destructive --- InternetSecure.pm | 35 +++++++++-------------------------- 1 file changed, 9 insertions(+), 26 deletions(-) diff --git a/InternetSecure.pm b/InternetSecure.pm index b84e15b..76ae5a2 100755 --- a/InternetSecure.pm +++ b/InternetSecure.pm @@ -50,37 +50,20 @@ sub set_defaults { $self->tax_amounts( {} ); } -# OnlinePayment's get_fields now filters out undefs in 3.x. :( +# Combine get_fields and remap_fields for convenience. Unlike OnlinePayment's +# remap_fields, this doesn't modify content(), and can therefore be called +# more than once. Also, unlike OnlinePayment's get_fields in 3.x, this doesn't +# exclude undefs. # -sub get_fields { - my ($self, @fields) = @_; - - my %content = $self->content; - - my %new = map +($_ => $content{$_}), @fields; - - return %new; -} - -# OnlinePayment's remap_fields is buggy in 2.x; this is copied from 3.x -# -sub remap_fields { +sub get_remap_fields { my ($self, %map) = @_; my %content = $self->content(); - foreach (keys %map) { - $content{$map{$_}} = delete $content{$_}; - } - $self->content(%content); -} + my %data; -# Combine get_fields and remap_fields for convenience -# -sub get_remap_fields { - my ($self, %map) = @_; - - $self->remap_fields(reverse %map); - my %data = $self->get_fields(keys %map); + while (my ($to, $from) = each %map) { + $data{$to} = $content{$from}; + } return %data; } -- 2.11.0