HTML::Native::List - List of HTML::Native objects
use HTML::Native::List; # Create some HTML my $list = HTML::Native::List->new ( [ img => { src => "logo.png" } ], [ h1 => "Hello!" ], "This is some text", ); print $list; # prints "<img src="logo.png" /><h1>Hello!</h1>This is some text"
An HTML::Native::List object represents a list containing a mixture of HTML::Native objects (themselves representing HTML elements) and plain-text content. HTML::Native uses an HTML::Native::List object to represent the children of an HTML element.
An HTML::Native::List object is a tied array (see perltie). You can treat it as a normal Perl array:
my $list = HTML::Native::List->new ( [ img => { src => "logo.png" } ], [ h1 => "Hello!" ], "This is some text", ); print $list->[1]; # prints "<h1>Hello!</h1>"
Any anonymous arrays within the contents will be automatically converted into new HTML::Native objects. For example:
my $list = HTML::Native::List->new(); push @$list, [ p => "Hello world" ]; print $list; # prints "<p>Hello world</p>"
See HTML::Native for more documentation and examples.
When subclassing HTML::Native::List, you may wish to override the class that is used by default to hold new elements. You can do this by overriding the new_element() method:
new_element()
$elem = $self->new_element ( ... )
The default implementation of this method simply calls HTML::Native->new():
HTML::Native->new()
return HTML::Native->new ( @_ );
You can use anonymous subroutines (closures) to dynamically generate portions of an HTML::Native::List array. For example:
my $message; my $list = HTML::Native::List->new ( [ h1 => "Dynamic content" ], sub { return $message; }, ); $message = "Hello world!"; print $list; # prints "<h1>Dynamic content</h1>Hello world!"
The subroutine can return either a single fully-constructed HTML::Native::List object, or a list of arguments ready to be passed to HTML::Native::List->new(). For example:
HTML::Native::List->new()
sub { return HTML::Native::List->new ( [ img => { src => $image } ], [ p => $message ], ); }
or
sub { return ( [ img => { src => $image } ], [ p => $message ] ); }
To install HTML::Native, copy and paste the appropriate command in to your terminal.
cpanm
cpanm HTML::Native
CPAN shell
perl -MCPAN -e shell install HTML::Native
For more information on module installation, please visit the detailed CPAN module installation guide.