NAME
CSS::Inliner - Library for converting CSS <style> blocks to inline styles.
SYNOPSIS
use Inliner;
my $inliner = new Inliner();
$inliner->read_file({filename => 'myfile.html'});
print $inliner->inlinify();
DESCRIPTION
Library for converting CSS style blocks into inline styles in an HTML document. Specifically this is intended for the ease of generating HTML emails. This is useful as even in 2009 Gmail and Hotmail don't support top level <style> declarations.
CONSTRUCTOR
new ([ OPTIONS ])
Instantiates the Inliner object. Sets up class variables that are
used during file parsing/processing. Possible options are:
html_tree (optional). Pass in a custom instance of HTML::Treebuilder
strip_attrs (optional). Remove all "id" and "class" attributes during
inlining
leave_style (optional). Leave style/link tags alone within <head>
during inlining
post_fetch_filter (optional). Execute a coderef filter on fetched
content. Useful for protecting mailmerge tags while fetching. You are
responsible for restoring any tags in your own code
METHODS
fetch_file( params )
Fetches a remote HTML file that supposedly contains both HTML
and a style declaration. It subsequently calls the read() method
automatically.
This method expands all relative urls, as well as fully expands
the stylesheet reference within the document.
This method requires you to pass in a params hash that contains
a url argument for the requested document. For example:
$self->fetch_file({ url => 'http://www.example.com' });
read_file( params )
Opens and reads an HTML file that supposedly contains both HTML
and a style declaration. It subsequently calls the read() method
automatically.
This method requires you to pass in a params hash that contains
a filename argument. For example:
$self->read_file({filename => 'myfile.html'});
read( params )
Reads html data and parses it. The intermediate data is stored
in class variables.
The <style> block is ripped out of the html here, and stored
separately. Class/ID/Names used in the markup are left alone.
This method requires you to pass in a params hash that contains
scalar html data. For example:
$self->read({html => $html});
inlinify()
Processes the html data that was entered through either 'read'
or 'read_file', returns a scalar that contains a composite chunk
of html that has inline styles instead of a top level <style>
declaration.
query() Given a particular selector return back the applicable styles
specificity()
Given a particular selector return back the associated
selectivity
content_warnings()
Return back any warnings thrown while inlining a given block of
content.
Note: content warnings are initialized at inlining time, not at
read time. In order to receive back content feedback you must
perform inlinify() first
Sponsor
This code has been developed under sponsorship of MailerMailer LLC, http://www.mailermailer.com/
AUTHOR
Kevin Kamel <"kamelkev@mailermailer.com">
CONTRIBUTORS
Vivek Khera <"vivek@khera.org"> Michael Peters <"wonko@cpan.org">
LICENSE
This module is Copyright 2010 Khera Communications, Inc. It is licensed under the same terms as Perl itself.