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 <h1>An <b>important</b> message</h1> 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" ); <p>click <a href="/see/other.html">here</a></p> 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 <content> is escaped" ); my $br = String::Tagged::HTML->new( "<br/>" ); $br->apply_tag( 0, $br->length, raw => 1 ); print +( $str . $br )->as_html( "p" ); <p>This <content> is escaped<br/></p> 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 <b>bbb <i>b+i</i></b><i> iii</i> 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 <leonerd@leonerd.org.uk>