package Template::Plugin::HtmlToText; use strict; use vars qw( @ISA $VERSION ); use base qw( Template::Plugin ); use Template::Plugin; $VERSION = '0.03'; sub new { my ($class, $context, $arg) = @_; $context->define_filter('html2text', [ \&html2text => 1 ]); return \&tt_wrap; } sub html2text { my ($context, $args) = @_; return sub { my $html = shift; return $html unless ($html =~ m#(<|>)#s); require HTML::TreeBuilder; my $tree = HTML::TreeBuilder->new->parse($html); require HTML::FormatText; my $formatter = HTML::FormatText->new(%{$args}); my $text = $formatter->format($tree); return $text; } } 1; __END__ =head1 NAME Template::Plugin::HtmlToText - Plugin interface to HTML::FormatText =head1 SYNOPSIS Quick summary of what the module does. Perhaps a little code snippet. [% USE HtmlToText %] # use html2text FILTER to var 'myhtml' or 'myhtmltext' [% myhtml FILTER html2text(leftmargin => 0, rightmargin => 50) %] [% myhtmltext | html2text %] # not to a var, but to html code [% FILTER html2text %] heavy [% END %] [%# output is "heavy", no %] =head1 DESCRIPTION This plugin provides an interface to the HTML::FormatText module which format HTML as plaintext. =head1 AUTHOR Fayland Lam, C<< >> =head1 COPYRIGHT & LICENSE Copyright 2006 Fayland Lam, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut