Class: Muddle::Parser
- Inherits:
-
Object
- Object
- Muddle::Parser
- Defined in:
- lib/muddle/parser.rb
Instance Method Summary collapse
-
#initialize ⇒ Parser
constructor
Set up the parser.
-
#parse(body_string) ⇒ Object
Parse an email body.
Constructor Details
#initialize ⇒ Parser
Set up the parser
The default filters do the following:
CSS adds a style block containing boilerplate CSS attributes to be
inlined. This is based on Email Boilerplate's 'Inline: YES' portions
Premailer passes the email through the Premailer gem, which inlines the CSS
it can, then appends a style block to the body containing the rest (since
some email clients strip out the <head> tag).
Style Element adds another style block, but this one is intended to be left
as a style declaration (rather than being inlined). This is based on
EMail Boilerplate's 'Inline: NO' portions
Attributes adds attributes to HTML elements where helpful, such as table cellpadding
and such. Based on Email Boilerplate's example element declarations
Schema Validation currently just adds the XHTML Strict DTD and outputs to a string,
however it's intended that this will eventually validate against an XSD and emit
warnings about potentially troublesome tags (like <div>)
24 25 26 27 28 29 30 31 32 |
# File 'lib/muddle/parser.rb', line 24 def initialize @filters = [] @filters << Muddle::Filter::BoilerplateCSS if Muddle.config.insert_boilerplate_css @filters << Muddle::Filter::Premailer if Muddle.config.parse_with_premailer @filters << Muddle::Filter::BoilerplateStyleElement if Muddle.config.insert_boilerplate_styles @filters << Muddle::Filter::BoilerplateAttributes if Muddle.config.insert_boilerplate_attributes @filters << Muddle::Filter::SchemaValidation if Muddle.config.validate_html end |
Instance Method Details
#parse(body_string) ⇒ Object
Parse an email body
body_string is the email body to be parsed in string form
Returns the parsed body string
40 41 42 43 44 |
# File 'lib/muddle/parser.rb', line 40 def parse(body_string) @filters.inject(body_string) do |filtered_string, filter| s = filter.filter(filtered_string) end end |