Sha256: 48ab9a23cb871d8a5ae45e148a4b099a37540bb7345ea9f2f907e0dfd0886261

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

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

    def newsletter_options
      newsletter_controller.options
    end

    def render(opts = {}, locs = {}, &block)
      unless opts.key?(:layout)
        opts[:layout] = metadata[: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

      content = with_email_renderer { super(opts, locs, &block) }

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

    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
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
middleman-newsletter-0.0.2 lib/middleman-newsletter/newsletter.rb
middleman-newsletter-0.0.1 lib/middleman-newsletter/newsletter.rb