summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjeff <jeff>2010-01-19 02:15:32 +0000
committerjeff <jeff>2010-01-19 02:15:32 +0000
commit3cb8ab8c67d443f499b9e55227b21b34b49a910d (patch)
tree2ba67fbd472033f50a11141080fe9b6b73401654
parent177c4e9d4e65906ce00af379fbb2ac561041e8bc (diff)
handle empty lists
-rw-r--r--lib/Net/OpenSRS.pm41
1 files changed, 25 insertions, 16 deletions
diff --git a/lib/Net/OpenSRS.pm b/lib/Net/OpenSRS.pm
index 2b74009..b7d8436 100644
--- a/lib/Net/OpenSRS.pm
+++ b/lib/Net/OpenSRS.pm
@@ -1233,23 +1233,32 @@ sub _format
}
sub _denastify {
- my ($arg) = ( shift );
- if ( ref($arg) eq 'HASH' ) {
- my $value;
- if ( exists( $arg->{content} ) ) {
- $value = $arg->{content};
- } elsif ( exists( $arg->{dt_array} ) ) {
- $value = [ map {
- { map { _denastify($_) } @{ $_->{dt_assoc} } }
- }
- @{ $arg->{dt_array} }
- ];
- } elsif ( exists( $arg->{dt_assoc} ) ) {
- $value = { map { _denastify($_) } @{ $arg->{dt_assoc} } };
+ my ($arg) = ( shift );
+
+ if ( 0 ) {
+ eval { use Data::Dumper };
+ warn $@ if $@;
+ warn "_denastify\n". Dumper($arg) unless $@;
+ }
+
+ if ( ref($arg) eq 'HASH' ) {
+ my $value;
+ if ( exists( $arg->{content} ) ) {
+ $value = $arg->{content};
+ } elsif ( exists( $arg->{dt_array} ) ) {
+ my $array = $arg->{dt_array};
+ $array = [ $array ] unless ref($array) eq 'ARRAY';
+ $value = [ map {
+ { map { _denastify($_) } @{ $_->{dt_assoc} } }
+ }
+ @$array
+ ];
+ } elsif ( exists( $arg->{dt_assoc} ) ) {
+ $value = { map { _denastify($_) } @{ $arg->{dt_assoc} } };
+ }
+ return ( $arg->{key} => $value );
}
- return ( $arg->{key} => $value );
- }
- ();
+ ();
}
=back