Module: Paginae::AttributeInjector

Defined in:
lib/paginae/attribute_injector.rb

Class Method Summary collapse

Class Method Details

.extended(base) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/paginae/attribute_injector.rb', line 5

def self.extended(base)
  class << base
    include NodeBuilder
    include ReaderBuilder

    def attribute(name, **kwargs)
      __define_node(name, **kwargs)
      __define_reader(name, **kwargs)
      instance_variable_set("@paginae_attributes", Set.new) unless instance_variable_defined?("@paginae_attributes")
      instance_variable_get("@paginae_attributes").add(name.to_sym)
    end

    attr_reader :paginae_attributes
  end

  base.class_eval do
    def data
      self.class.paginae_attributes.to_h { |key| [key, send(key)] }
    end
  end
end