NAME

Template::Refine::Fragment - represent and refine a fragment of HTML

SYNOPSIS

use Template::Refine::Fragment;
use Template::Refine::Processor::Rule;
use Template::Refine::Processor::Rule::Select::XPath;
use Template::Refine::Processor::Rule::Transform::Replace::WithText;

my $frag = Template::Refine::Fragment->new_from_string(
    '<p>Hello, <span class="world"/>.' # invalid HTML ok
);

my $refined = $frag->process(
    Template::Refine::Processor::Rule->new(
        selector => Template::Refine::Processor::Rule::Select::XPath->new(
            pattern => '//*[@class="world"]',
        ),
        transformer => Template::Refine::Processor::Rule::Transform::Replace::WithText->new(
            replacement => sub {
                return 'world';
            },
        ),
    ),
);

return $refined->render; # "<p>Hello, <span class="world">world</span>.</p>"

METHODS

new( fragment => $fragment )

Accepts one argument, fragment, which is the XML::LibXML::DocumentFragment that you want to operate on.

The constructors below are more useful.

new_from_dom( $dom )

Accepts an XML::LibXML::DOM object

new_from_string( $html_string )

Accepts an HTML string

new_from_file( $filename )

Accepts a filename containing HTML

fragment

Return the XML::LibXML::DocumentFragment that backs this object.

process( @rules )

Apply Template::Refine::Processor::Rules in @rules and return a new Template::Refine::Fragment.

render

Return the fragment as valid HTML

BUGS

Report to RT.

VERSION CONTROL

You can browse the repository at:

http://git.jrock.us/?p=Template-Refine.git;a=summary

You can clone the repository by typing:

git clone git://git.jrock.us/Template-Refine

Please e-mail me any patches. Thanks in advance for your help!

AUTHOR

Jonathan Rockway <jrockway@cpan.org>

COPYRIGHT

Copyright (c) 2008 Infinity Interactive. All rights reserved This
program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.