HTML::AsSubs - functions that construct a HTML syntax tree
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;
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.)
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?
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |