handle empty lists
authorjeff <jeff>
Tue, 19 Jan 2010 02:15:32 +0000 (02:15 +0000)
committerjeff <jeff>
Tue, 19 Jan 2010 02:15:32 +0000 (02:15 +0000)
lib/Net/OpenSRS.pm

index 2b74009..b7d8436 100644 (file)
@@ -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