NAME
"String::Tagged::HTML" - format HTML output using "String::Tagged"
SYNOPSIS
use String::Tagged::HTML;
my $st = String::Tagged::HTML->new( "An important message" );
$st->apply_tag( 3, 9, b => 1 );
print $st->as_html( "h1" );
DESCRIPTION
This subclass of String::Tagged provides a method, "as_html", for
rendering the string as an HTML fragment, using the tags to provide
formatting. For example, the SYNOPSIS example will produce the output
An important message
With the exception of tags named "raw", a tag applied to an extent of
the "String::Tagged::HTML" will be rendered using start and end HTML
tags of the same name. If the tag's value is a "HASH" reference, then
this hash will be used to provide additional attributes for the HTML
element.
my $str = String::Tagged::HTML->new( "click here" );
$str->apply_tag( 6, 4, a => { href => "/see/other.html" } );
print $str->as_html( "p" );
click here
If it is not a "HASH" reference, then its value ought to be a simple
boolean true value, such as 1.
The special tag named "raw" disables HTML entity escaping over its
extent.
my $str = String::Tagged::HTML->new( "This is escaped" );
my $br = String::Tagged::HTML->new( "
" );
$br->apply_tag( 0, $br->length, raw => 1 );
print +( $str . $br )->as_html( "p" );
This <content> is escaped
Tag Nesting
Because of the arbitrary way that "String::Tagged" tags may be applied,
as compared to the strict nesting requirements in HTML, the "as_html"
method may have to break a single "String::Tagged" tag into multiple
regions. In the following example, the "i" tag has been split in two to
allow it to overlap correctly with "b".
my $str = String::Tagged::HTML->new( "bbb b+i iii" );
$str->apply_tag( 0, 7, b => 1 );
$str->apply_tag( 4, 7, i => 1 );
print $str->as_html
bbb b+i iii
CONSTRUCTORS
As well as the standard "new" and "new_tagged" constructors provided by
String::Tagged, the following is provided.
$st = String::Tagged::HTML->new_raw( $str )
Returns a new "String::Tagged::HTML" instance with the "raw" tag applied
over its entire length. This convenience is provided for creating
objects containing already-rendered HTML fragments.
METHODS
The following methods are provided in addition to those provided by
String::Tagged.
$html = $st->as_html( $element )
Returns a string containing an HTML rendering of the current contents of
the object. If $element is provided, the output will be wrapped in an
element of the given name. If not defined, no outer wrapping will be
performed.
AUTHOR
Paul Evans