HTML::Widget::BlockContainer - Block Container


HTML-Widget documentation Contained in the HTML-Widget distribution.

Index


Code Index:

NAME

Top

HTML::Widget::BlockContainer - Block Container

DESCRIPTION

Top

A Container for Block elements. See HTML::Widget::Element::Block and HTML::Widget::Container.

METHODS

Top

AUTHOR

Top

Michael Gray, mjg@cpan.org


HTML-Widget documentation Contained in the HTML-Widget distribution.
package HTML::Widget::BlockContainer;

use warnings;
use strict;
use base 'HTML::Widget::Container';
use Carp qw/croak/;

__PACKAGE__->mk_accessors(qw/content pre_content post_content wrap_sub/);

sub _build_element {
    my ( $self, $element ) = @_;

    return () unless $element;
    if ( ref $element eq 'ARRAY' ) {
        croak("Not expecting an array");
    }

    my $wrap_sub = $self->wrap_sub || sub { return (@_); };

    my $e = $element->clone;
    $e->push_content( @{ $self->pre_content } ) if $self->pre_content;
    $e->push_content( map { &$wrap_sub( $_->as_list ); } @{ $self->content } );
    $e->push_content( @{ $self->post_content } ) if $self->post_content;

    if ( $self->label ) {
        my $l = $self->label->clone;
        $e = $l->push_content($e);
    }

    return ($e);
}

1;