NAME

HTML::Builder - A declarative approach to HTML generation

VERSION

This document describes 0.002 of HTML::Builder - released February 16, 2012 as part of HTML-Builder.

SYNOPSIS

use HTML::Builder ':minimal';

# $html is: <div id="main"><p>Something, huh?</p></div>
my $html = div { id gets 'main'; p { 'Something, huh?' } };

DESCRIPTION

A quick and dirty set of helper functions to make generating small bits of HTML a little less tedious.

FUNCTIONS

our_tags

A unique, sorted list of the HTML tags we know about (and handle).

tag($tag_name, $code_ref)

The actual function responsible for handling the tagging. All of the helper functions pass off to tag() (e.g. div() is sub div(&) { unshift 'div'; goto \&tag }).

USAGE

Each supported HTML tag takes a coderef, executes it, and returns the output the coderef writes to STDOUT with the return value appended.

That is:

div { say h1 { 'Hi there! }; p { "Nice day, isn't it?" } }

Generates:

<div><h1>Hi there!</h1><p>Nice day, isn't it?</p></div>

Element attributes are handled by specifying them with gets. e.g.:

div { id gets 'main'; 'Hi!' }

Generates:

<div id="main">Hi!</div>

gets may be specified multiple times, for multiple attributes.

Nested Tags

When one tag function is called from within another, the nested tag will print its output to STDOUT rather than returning it. That means that this:

div { print h1 { 'Hi there! }; p { "Nice day, isn't it?" } }

...and this:

div { h1 { 'Hi there! }; p { "Nice day, isn't it?" } }

Behave identically, from the perspective of the caller.

EXPORTED FUNCTIONS

Each tag we handle is capable of being exported, and called with a coderef. This coderef is executed, and the return is wrapped in the tag. Attributes on the tag can be set from within the coderef by using gets, a la id gets 'foo'.

Export Groups

all

Everything.

Well, what @CGI::EXPORT_TAGS{qw{ :html2 :html3 :html4 }} thinks is everything, at any rate.

This isn't, perhaps, optimal, but I haven't run into any issues with it yet. That being said, I'm open to changing our tags list, and where it's generated from.

minimal

A basic set of the most commonly used tags:

h1..h4 div p img span script br ul ol li style a

moose_safe

Everything, except tags that would conflict with Moose sugar (currently meta).

ACKNOWLEDGMENTS

This package was inspired by Template::Declare::Tags... In particular, our gets::AUTOLOAD is pretty much a straight-up copy of Template::Declare::Tags' is::AUTOLOAD, with some modifications. We also pass off to HTML::Tiny, and allow it to do the work of actually generating the output. Thanks! :)

SEE ALSO

Please see those modules/websites for more information related to this module.

SOURCE

The development version is on github at http://github.com/RsrchBoy/html-builder and may be cloned from git://github.com/RsrchBoy/html-builder.git

BUGS

Please report any bugs or feature requests on the bugtracker website https://github.com/RsrchBoy/html-builder/issues

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

AUTHOR

Chris Weyl <cweyl@alumni.drew.edu>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2012 by Chris Weyl.

This is free software, licensed under:

The GNU Lesser General Public License, Version 2.1, February 1999

1 POD Error

The following errors were encountered while parsing the POD:

Around line 245:

Nested L<> are illegal. Pretending inner one is X<...> so can continue looking for other errors.

Nested L<> are illegal. Pretending inner one is X<...> so can continue looking for other errors.