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
|