Class: ActionText::AttachmentGallery

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ActiveModel::Model

#persisted?

Methods included from ActiveSupport::Concern

#append_features, #class_methods, extended, #included

Methods included from ActiveModel::Conversion

#to_key, #to_model, #to_param, #to_partial_path

Methods included from ActiveModel::Validations

#errors, #initialize_dup, #invalid?, #valid?, #validate!, #validates_with

Methods included from ActiveModel::AttributeAssignment

#assign_attributes

Constructor Details

#initialize(node) ⇒ AttachmentGallery

Returns a new instance of AttachmentGallery.



41
42
43
# File 'actiontext/lib/action_text/attachment_gallery.rb', line 41

def initialize(node)
  @node = node
end

Instance Attribute Details

#nodeObject (readonly)

Returns the value of attribute node



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

def node
  @node
end

Class Method Details



22
23
24
25
26
27
28
29
30
31
32
# File 'actiontext/lib/action_text/attachment_gallery.rb', line 22

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



8
9
10
11
12
# File 'actiontext/lib/action_text/attachment_gallery.rb', line 8

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


14
15
16
17
18
19
20
# File 'actiontext/lib/action_text/attachment_gallery.rb', line 14

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



34
35
36
# File 'actiontext/lib/action_text/attachment_gallery.rb', line 34

def from_node(node)
  new(node)
end

Instance Method Details

#attachmentsObject



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

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

#inspectObject



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

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

#sizeObject



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

def size
  attachments.size
end