Class: Antwort::EmailBuilder

Inherits:
Builder
  • Object
show all
Defined in:
lib/antwort/builder/email.rb

Instance Attribute Summary collapse

Attributes inherited from Builder

#asset_server, #build_dir, #build_id, #css, #css_style, #markup_dir, #scss_dir, #source_dir, #template

Instance Method Summary collapse

Methods inherited from Builder

#build, #build_css!, #compile_scss, #create_build_directories!, #flatten_inlined_css, #initialize, #load_css, #use_asset_server

Methods included from MarkupSanitizers

#add_included_css, #remove_excessive_newlines, #remove_extra_dom, #remove_livereload, #remove_roadie_flags

Methods included from LogicHelpers

#cleanup_logic, #convert_helper_wrappers, #convert_partials_to_includes, #preserve_assignments, #preserve_comments, #preserve_conditionals, #preserve_leftover_statements, #preserve_logic, #preserve_loops, #preserve_nbsps, #preserve_variables, #restore_nbsps, #restore_variables_in_links

Methods included from FileHelpers

#count_files, #create_file!, #email_id_from_folder_name, #list_folders

Methods included from Helpers

#symbolize_keys!

Constructor Details

This class inherits a constructor from Antwort::Builder

Instance Attribute Details

#html_markupObject

Returns the value of attribute html_markup.



3
4
5
# File 'lib/antwort/builder/email.rb', line 3

def html_markup
  @html_markup
end

Instance Method Details

#build!Object



19
20
21
22
23
24
25
26
27
28
# File 'lib/antwort/builder/email.rb', line 19

def build!
  unless html_markup.nil?
    build_css!
    build_html!
    inline_css!
  end

  sleep 1 until File.exist?(@inlined_file)
  true
end

#build_html!Object



30
31
32
33
34
35
# File 'lib/antwort/builder/email.rb', line 30

def build_html!
  markup = html_markup
  markup = markup.gsub("/assets/#{template.name}/inline.css", 'inline.css')
                 .gsub("/assets/#{template.name}/include.css", 'include.css')
  create_file!(content: markup, path: "#{markup_dir}/#{template.name}.html")
end

#cleanup_markup(markup) ⇒ Object



52
53
54
55
56
# File 'lib/antwort/builder/email.rb', line 52

def cleanup_markup(markup)
  content = use_asset_server(markup)
  content = add_included_css(content)
  content
end

#inline_css!Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/antwort/builder/email.rb', line 37

def inline_css!
  markup   = preserve_nbsps(html_markup)
  document = Roadie::Document.new(markup)

  document.asset_providers << Roadie::NullProvider.new
  document.add_css(css)

  inlined = restore_nbsps(document.transform)
  inlined = cleanup_markup(inlined)
  inlined = remove_roadie_flags(inlined)
  inlined = remove_excessive_newlines(inlined)
  inlined = flatten_inlined_css(inlined)
  create_file!(content: inlined, path: @inlined_file)
end

#post_initializeObject



5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/antwort/builder/email.rb', line 5

def post_initialize(*)
  app     ||= Antwort::Server.new
  mock    ||= Rack::MockRequest.new(app)
  @request  = mock.get("/template/#{template.name}")

  if template_is_valid?
    create_build_directories!
    @html_markup  = remove_livereload(@request.body)
    @inlined_file = "#{build_dir}/#{template.name}.html"
  else
    show_error_message
  end
end