Module: PrettyMailer

Defined in:
lib/pretty_mailer.rb,
lib/pretty_mailer/html.rb,
lib/pretty_mailer/version.rb,
lib/pretty_mailer/asset_parser.rb

Defined Under Namespace

Classes: AssetParser, HTML

Constant Summary collapse

VERSION =
"0.0.3"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



9
10
11
# File 'lib/pretty_mailer.rb', line 9

def included base
  base.alias_method_chain :collect_responses_and_parts_order, :inline_styles
end

Instance Method Details

#apply_inline_styles(response, stylesheets) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/pretty_mailer.rb', line 29

def apply_inline_styles response, stylesheets
  body = HTML.new response[:body]
  AssetParser.new(stylesheets: [*stylesheets]).each_selector do |selector, declarations, specificity|
    body.add_rules selector, declarations, specificity
  end
  body.reduce_specificities!
  response[:body] = body.to_s
  response
end

#collect_responses_and_parts_order_with_inline_styles(headers) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/pretty_mailer.rb', line 15

def collect_responses_and_parts_order_with_inline_styles headers
  responses, parts_order = collect_responses_and_parts_order_without_inline_styles headers
  unless headers[:css].blank?
    responses.map! do |response|
      if response[:content_type] == 'text/html'
        apply_inline_styles response, headers[:css]
      else
        response
      end
    end
  end
  [responses, parts_order]
end