DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

TokeParser(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