Class: Mjml::Handler

Inherits:
Object
  • Object
show all
Defined in:
lib/mjml.rb

Instance Method Summary collapse

Instance Method Details

#call(template, source = nil) ⇒ Object

Optional second source parameter to make it work with Rails >= 6: Beginning with Rails 6 template handlers get the source of the template as the second parameter.



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/mjml.rb', line 110

def call(template, source = nil)
  compiled_source =
    if Rails::VERSION::MAJOR >= 6
      template_handler.call(template, source)
    else
      template_handler.call(template)
    end

  # Per MJML v4 syntax documentation[0] valid/render'able document MUST start with <mjml> root tag
  # If we get here and template source doesn't start with one it means
  # that we are rendering partial named according to legacy naming convention (partials ending with '.mjml')
  # Therefore we skip MJML processing and return raw compiled source. It will be processed
  # by MJML library when top-level layout/template is rendered
  #
  # [0] - https://github.com/mjmlio/mjml/blob/master/doc/guide.md#mjml
  if compiled_source =~ /<mjml(.+)?>/i
    "Mjml::Mjmltemplate.to_html(begin;#{compiled_source};end).html_safe"
  else
    compiled_source
  end
end

#template_handlerObject



103
104
105
# File 'lib/mjml.rb', line 103

def template_handler
  @_template_handler ||= ActionView::Template.registered_template_handler(Mjml.template_language)
end