NAME

HTML::Declare - For When Template Systems Are Too Huge And Heredocs Too Messy

SYNOPSIS

use HTML::Declare ':all';

# A simple hello world
print HTML { 
    _ => [
        HEAD { _ => TITLE { _ => 'Hello World!' } },
        BODY { _ => 'Hello World!' } 
    ]   
};

# A simple anchor nested in a div
print DIV {
    _ => [
        A {
            href => 'http://127.0.0.1',
            _    => '<< Home Sweet Home!'
        }
    ]
};

DESCRIPTION

A very simple micro language to generate HTML.

This is not a real template system like Template or HTML::Mason, it's just a simple (and fun) way to avoid those messy heredocs. ;)

FUNCTIONS

All functions work the same, they expect a hashref as first argument which contains attributes for the tag to generate.

The special attribute _ contains the content for the tag. The content may be a single string (in this case entities are auto encoded) or a arrayref containing strings that shouldn't be encoded.

<TAG> { attribute => 'value' }
DIV { id => 'foo', _ => 'lalala' }
DIV { id => 'link' _ => [ '<b>Don't encode me!</b>' ] }
DIV { _ => [ A { href => 'http://127.0.0.1', _ => 'Home!' } ] }

A

ABBR

ACRONYM

ADDRESS

AREA

B

BASE

BDO

BIG

BLOCKQUOTE

BODY

BR

BUTTON

CAPTION

CITE

CODE

COL

COLGROUP

DD

DEL

DIV

DFN

DL

DT

EM

FIELDSET

FORM

FRAME

FRAMESET

H1

H2

H3

H4

H5

H6

HR

HTML

I

IFRAME

IMG

INPUT

INS

KBD

LABEL

LEGEND

LI

MAP

META

NOFRAMES

NOSCRIPT

OBJECT

OL

OPTGROUP

OPTION

P

PARAM

PRE

Q

SAMP

SCRIPT

SELECT

SMALL

SPAN

STRONG

STYLE

SUB

SUP

TABLE

TAG

TBODY

TD

TEXTAREA

TFOOT

TH

THEAD

TITLE

TR

TT

UL

VAR

AUTHOR

Sebastian Riedel, sri@oook.de

LICENSE

This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.