Module: ActiveMail::Quality::PreviewRenderer

Extended by:
T::Sig
Defined in:
lib/activemail/quality/preview_renderer.rb

Class Method Summary collapse

Class Method Details

.allObject



38
39
40
41
42
43
44
# File 'lib/activemail/quality/preview_renderer.rb', line 38

def all
  return [] unless defined?(ActionMailer::Preview)

  ActionMailer::Preview.all.flat_map do |preview|
    preview.emails.map { |email| [preview, email] }
  end
end

.html_body(message) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/activemail/quality/preview_renderer.rb', line 49

def html_body(message)
  mail = message.respond_to?(:message) ? message.message : message
  body = mail.html_part&.body || single_part_html_body(mail)
  return '' unless body

  body.respond_to?(:decoded) ? body.decoded : body.to_s
end

.key(preview, email) ⇒ Object



23
24
25
# File 'lib/activemail/quality/preview_renderer.rb', line 23

def key(preview, email)
  "#{preview.preview_name}##{email}"
end

.render(preview, email) ⇒ Object



16
17
18
# File 'lib/activemail/quality/preview_renderer.rb', line 16

def render(preview, email)
  html_body(preview.call(email))
end

.render_to_disk(preview, email, output_root) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/activemail/quality/preview_renderer.rb', line 28

def render_to_disk(preview, email, output_root)
  dir = Pathname(output_root).join(preview.preview_name)
  FileUtils.mkdir_p(dir)
  path = dir.join("#{email}.html")
  File.write(path, render(preview, email))
  path
end