Module: Middleman::Newsletter

Defined in:
lib/middleman-newsletter/newsletter.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



3
4
5
6
# File 'lib/middleman-newsletter/newsletter.rb', line 3

def self.extended(base)
  base.class.send(:attr_accessor, :newsletter_controller)
  base.class.send(:attr_accessor, :source_resource)
end

Instance Method Details

#newsletter_optionsObject



8
9
10
# File 'lib/middleman-newsletter/newsletter.rb', line 8

def newsletter_options
  newsletter_controller.options
end

#render(opts = {}, locs = {}, &block) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/middleman-newsletter/newsletter.rb', line 12

def render(opts = {}, locs = {}, &block)
  unless opts.key?(:layout)
    opts[:layout] = [:options][:newsletter_layout]
    opts[:layout] = newsletter_options.layout if opts[:layout].nil? || opts[:layout] == :_auto_layout

    # Convert to a string unless it's a boolean
    opts[:layout] = opts[:layout].to_s if opts[:layout].is_a? Symbol
  end

  unless locs.key?(:preview_text)
    locs[:preview_text] = newsletter_options.preview_text.call(self)
  end

  content = with_email_renderer { super(opts, locs, &block) }
  content = newsletter_options.content_modifier.call(self, content)

  Premailer.new(content, with_html_string: true, output_encoding: 'UTF-8', input_encoding: 'UTF-8').to_inline_css
end

#with_email_rendererObject



31
32
33
34
35
36
37
38
# File 'lib/middleman-newsletter/newsletter.rb', line 31

def with_email_renderer
  # Ensure we render using our custom email renderer
  ::Tilt.register(source_file.downcase, ::Middleman::Renderers::KramdownEmailTemplate)
  yield
ensure
  # Don't pollute the tilt mappings, will slow things down
  ::Tilt.default_mapping.unregister(source_file.downcase)
end