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