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 )