TreeBuilder(3)
NAME
HTML::AsSubs - functions that construct a HTML syntax tree
SYNOPSIS
use HTML::AsSubs;
$h = body(
h1("This is the heading"),
p("This is the first paragraph which contains a ",
a({href=>'link.html'}, "link"),
" and an ",
img({src=>'img.gif', alt=>'image'}),
"."
),
);
print $h->as_HTML;
DESCRIPTION
This module exports functions that can be used to construct various
HTML elements. The functions are named after the tags of the correpond-
ing HTML element and are all written in lower case. If the first argu-
ment is a hash reference then it will be used to initialize the
attributes of this element. The remaining arguments are regarded as
content.
For a similar idea (i.e., it's another case where the syntax tree of
the Perl source mirrors the syntax tree of the HTML produced), see
HTML::Element's "new_from_lol" method.
For what I now think is a cleaner implementation of this same idea, see
the excellent module "XML::Generator", which is what I suggest for
actual real-life use. (I suggest this over "HTML::AsSubs" and over
"CGI.pm"'s HTML-making functions.)
ACKNOWLEDGEMENT
This module was inspired by the following message:
Date: Tue, 4 Oct 1994 16:11:30 +0100
Subject: Wow! I have a large lightbulb above my head!
Take a moment to consider these lines:
%OVERLOAD=( '""' => sub { join("", @{$_[0]}) } );
sub html { my($type)=shift; bless ["<$type>", @_, "</$type>"]; }
:-) I *love* Perl 5! Thankyou Larry and Ilya.
Regards,
Tim Bunce.
p.s. If you didn't get it, think about recursive data types: html(html())
p.p.s. I'll turn this into a much more practical example in a day or two.
p.p.p.s. It's a pity that overloads are not inherited. Is this a bug?
BUGS
The exported link() function overrides the builtin link() function.
The exported tr() function must be called using &tr(...) syntax because
it clashes with the builtin tr/../../ operator.
SEE ALSO
HTML::Element, XML::Generator
Private Functions
_elem()
The _elem() function is wrapped by all the html 'tag' functions. It
takes a tag-name, optional hashref of attributes and a list of content
as parameters.
perl v5.8.8 2006-08-04 HTML::AsSubs(3)
See also HTML::Clean(3)
See also HTML::Element(3)
See also HTML::Element::traverse(3)
See also HTML::Entities(3)
See also HTML::FillInForm(3)
See also HTML::Filter(3)
See also HTML::Form(3)
See also HTML::HeadParser(3)
See also HTML::LinkExtor(3)
See also HTML::Parse(3)
See also HTML::Parser(3)
See also HTML::PullParser(3)
See also HTML::SimpleParse(3)
See also HTML::Tagset(3)
See also HTML::TokeParser(3)
See also HTML::Tree(3)
See also HTML::Tree::AboutObjects(3)
See also HTML::Tree::AboutTrees(3)
See also HTML::Tree::Scanning(3)
See also HTML::TreeBuilder(3)
See also Pod::Simple::HTML(3)
Man(1) output converted with
man2html