Class: Kanayago::BaseNode

Inherits:
Object
  • Object
show all
Defined in:
lib/kanayago/base_node.rb,
ext/kanayago/kanayago.c

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.node_attributes(*names) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/kanayago/base_node.rb', line 5

def self.node_attributes(*names)
  if names.any?
    @__node_attributes__ = names.freeze
    names.each { |name| attr_reader name.to_sym }
  end

  @__node_attributes__ || []
end

Instance Method Details

#deconstructObject



14
15
16
17
18
# File 'lib/kanayago/base_node.rb', line 14

def deconstruct
  self.class.node_attributes.filter_map do |name|
    public_send(name) if respond_to?(name)
  end
end

#deconstruct_keys(keys) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/kanayago/base_node.rb', line 20

def deconstruct_keys(keys)
  names = keys.nil? ? self.class.node_attributes : keys

  names.each_with_object({}) do |name, values|
    values[name] = public_send(name) if respond_to?(name)
  end
end