- 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 );