Class: ActionText::AttachmentGallery

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
lib/action_text/attachment_gallery.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node) ⇒ AttachmentGallery

Returns a new instance of AttachmentGallery.



54
55
56
# File 'lib/action_text/attachment_gallery.rb', line 54

def initialize(node)
  @node = node
end

Instance Attribute Details

#nodeObject (readonly)

Returns the value of attribute node.



52
53
54
# File 'lib/action_text/attachment_gallery.rb', line 52

def node
  @node
end

Class Method Details

.attachment_selectorObject



43
44
45
# File 'lib/action_text/attachment_gallery.rb', line 43

def attachment_selector
  "#{ActionText::Attachment.tag_name}[presentation=gallery]"
end


27
28
29
30
31
32
33
34
35
36
37
# File 'lib/action_text/attachment_gallery.rb', line 27

def find_attachment_gallery_nodes(content)
  Fragment.wrap(content).find_all(selector).select do |node|
    node.children.all? do |child|
      if child.text?
        /\A(\n|\ )*\z/.match?(child.text)
      else
        child.matches? attachment_selector
      end
    end
  end
end

.fragment_by_canonicalizing_attachment_galleries(content) ⇒ Object



13
14
15
16
17
# File 'lib/action_text/attachment_gallery.rb', line 13

def fragment_by_canonicalizing_attachment_galleries(content)
  fragment_by_replacing_attachment_gallery_nodes(content) do |node|
    "<#{TAG_NAME}>#{node.inner_html}</#{TAG_NAME}>"
  end
end


19
20
21
22
23
24
25
# File 'lib/action_text/attachment_gallery.rb', line 19

def fragment_by_replacing_attachment_gallery_nodes(content)
  Fragment.wrap(content).update do |source|
    find_attachment_gallery_nodes(source).each do |node|
      node.replace(yield(node).to_s)
    end
  end
end

.from_node(node) ⇒ Object



39
40
41
# File 'lib/action_text/attachment_gallery.rb', line 39

def from_node(node)
  new(node)
end

.selectorObject



47
48
49
# File 'lib/action_text/attachment_gallery.rb', line 47

def selector
  "#{TAG_NAME}:has(#{attachment_selector} + #{attachment_selector})"
end

Instance Method Details

#attachmentsObject



58
59
60
61
62
# File 'lib/action_text/attachment_gallery.rb', line 58

def attachments
  @attachments ||= node.css(ActionText::AttachmentGallery.attachment_selector).map do |node|
    ActionText::Attachment.from_node(node).with_full_attributes
  end
end

#inspectObject



68
69
70
# File 'lib/action_text/attachment_gallery.rb', line 68

def inspect
  "#<#{self.class.name} size=#{size.inspect}>"
end

#sizeObject



64
65
66
# File 'lib/action_text/attachment_gallery.rb', line 64

def size
  attachments.size
end