Data-HTML-TreeDumper
view release on metacpan or search on metacpan
lib/Data/HTML/TreeDumper.pm view on Meta::CPAN
}
sub _dumpRaw {
my $self = shift;
my $x = shift // '';
my $name = $self->_normalizeName( $x, shift );
my $depth = shift || 0;
return $autoTag->tag(
tag => 'span',
attr => { class => $self->ClassValue(), },
cdata => encode_entities($x),
);
}
sub _dumpArray {
my $self = shift;
my $x = shift // '';
my $name = $self->_normalizeName( $x, shift );
my $depth = shift || 0;
if ( $depth > $self->MaxDepth() ) {
return $autoTag->tag(
tag => 'span',
attr => { class => $self->ClassKey(), },
cdata => encode_entities($name),
)
. ': '
. $autoTag->tag(
tag => 'span',
attr => { class => $self->ClassValue(), },
cdata => '[...]',
);
}
my $inner = [ map { { tag => 'li', cdata => $self->dump( $_, undef, $depth ) } } @{$x} ];
return $autoTag->tag(
tag => 'details',
cdata => [
{ tag => 'summary',
attr => { class => $self->ClassKey(), },
cdata => encode_entities($name),
},
{ tag => 'ol',
attr => { class => $self->ClassOrderedList(), start => $self->StartOrderedList() },
cdata => $inner,
},
],
);
}
sub _dumpHash {
my $self = shift;
my $x = shift // '';
my $name = $self->_normalizeName( $x, shift );
my $depth = shift || 0;
if ( $depth > $self->MaxDepth() ) {
return $autoTag->tag(
tag => 'span',
attr => { class => $self->ClassKey(), },
cdata => encode_entities($name),
)
. ': '
. $autoTag->tag(
tag => 'span',
attr => { class => $self->ClassValue(), },
cdata => '{...}',
);
}
my $inner = [
map {
is_arrayref( $x->{$_} )
? { tag => 'li', cdata => $self->_dumpArray( $x->{$_}, $_, $depth + 1 ) }
: is_hashref( $x->{$_} )
? { tag => 'li', cdata => $self->_dumpHash( $x->{$_}, $_, $depth + 1 ) }
: {
tag => 'li',
cdata => $autoTag->tag(
tag => 'span',
attr => { class => $self->ClassKey(), },
cdata => encode_entities($_)
)
. ': '
. $self->dump( $x->{$_}, $_, $depth + 1 )
}
} sort( keys( %{$x} ) )
];
return $autoTag->tag(
tag => 'details',
cdata => [
{ tag => 'summary',
attr => { class => $self->ClassKey(), },
cdata => encode_entities($name),
},
{ tag => 'ul',
attr => { class => $self->ClassUnorderedList(), },
cdata => $inner,
},
],
);
}
#endregion
1;
__END__
( run in 0.483 second using v1.01-cache-2.11-cpan-454fe037f31 )