class ActionMosaico::Content

Attributes

fragment[R]

Public Class Methods

fragment_by_canonicalizing_content(content) click to toggle source
# File lib/action_mosaico/content.rb, line 13
def fragment_by_canonicalizing_content(content)
  fragment = ActionMosaico::Attachment.fragment_by_canonicalizing_attachments(content)
  ActionMosaico::AttachmentGallery.fragment_by_canonicalizing_attachment_galleries(fragment)
end
new(content = nil, options = {}) click to toggle source
# File lib/action_mosaico/content.rb, line 19
def initialize(content = nil, options = {})
  options.with_defaults! canonicalize: true

  @fragment = if options[:canonicalize]
                self.class.fragment_by_canonicalizing_content(content)
              else
                ActionMosaico::Fragment.wrap(content)
              end
end

Public Instance Methods

==(other) click to toggle source
# File lib/action_mosaico/content.rb, line 107
def ==(other)
  to_s == other.to_s if other.is_a?(self.class)
end
append_attachables(attachables) click to toggle source
# File lib/action_mosaico/content.rb, line 55
def append_attachables(attachables)
  attachments = ActionMosaico::Attachment.from_attachables(attachables)
  self.class.new([to_s.presence, *attachments].compact.join("\n"))
end
as_json(*) click to toggle source
# File lib/action_mosaico/content.rb, line 99
def as_json(*)
  to_html
end
attachables() click to toggle source
# File lib/action_mosaico/content.rb, line 49
def attachables
  @attachables ||= attachment_nodes.map do |node|
    ActionMosaico::Attachable.from_node(node)
  end
end
attachment_galleries() click to toggle source
# File lib/action_mosaico/content.rb, line 39
def attachment_galleries
  @attachment_galleries ||= attachment_gallery_nodes.map do |node|
    attachment_gallery_for_node(node)
  end
end
attachments() click to toggle source
# File lib/action_mosaico/content.rb, line 33
def attachments
  @attachments ||= attachment_nodes.map do |node|
    attachment_for_node(node)
  end
end
inspect() click to toggle source
# File lib/action_mosaico/content.rb, line 103
def inspect
  "#<#{self.class.name} #{to_s.truncate(25).inspect}>"
end
render_attachment_galleries(&block) click to toggle source
# File lib/action_mosaico/content.rb, line 67
def render_attachment_galleries(&block)
  content = ActionMosaico::AttachmentGallery.fragment_by_replacing_attachment_gallery_nodes(fragment) do |node|
    block.call(attachment_gallery_for_node(node))
  end
  self.class.new(content, canonicalize: false)
end
render_attachments(**options, &block) click to toggle source
# File lib/action_mosaico/content.rb, line 60
def render_attachments(**options, &block)
  content = fragment.replace(ActionMosaico::Attachment.tag_name) do |node|
    block.call(attachment_for_node(node, **options))
  end
  self.class.new(content, canonicalize: false)
end
to_html() click to toggle source
# File lib/action_mosaico/content.rb, line 82
def to_html
  fragment.to_html
end
to_mosaico_html() click to toggle source
# File lib/action_mosaico/content.rb, line 78
def to_mosaico_html
  render_attachments(&:to_mosaico_attachment).to_html
end
to_partial_path() click to toggle source
# File lib/action_mosaico/content.rb, line 91
def to_partial_path
  'action_mosaico/contents/content'
end
to_plain_text() click to toggle source
# File lib/action_mosaico/content.rb, line 74
def to_plain_text
  render_attachments(with_full_attributes: false, &:to_plain_text).fragment.to_plain_text
end
to_rendered_html_with_layout() click to toggle source
# File lib/action_mosaico/content.rb, line 86
def to_rendered_html_with_layout
  render layout: 'action_mosaico/contents/content', partial: to_partial_path, formats: :html,
         locals: { content: self }
end
to_s() click to toggle source
# File lib/action_mosaico/content.rb, line 95
def to_s
  to_rendered_html_with_layout
end

Private Instance Methods

attachment_for_node(node, with_full_attributes: true) click to toggle source
# File lib/action_mosaico/content.rb, line 121
def attachment_for_node(node, with_full_attributes: true)
  attachment = ActionMosaico::Attachment.from_node(node)
  with_full_attributes ? attachment.with_full_attributes : attachment
end
attachment_nodes() click to toggle source
# File lib/action_mosaico/content.rb, line 113
def attachment_nodes
  @attachment_nodes ||= fragment.find_all(ActionMosaico::Attachment.tag_name)
end