Class: Kanayago::BaseNode
- Inherits:
-
Object
- Object
- Kanayago::BaseNode
show all
- Defined in:
- lib/kanayago/base_node.rb,
ext/kanayago/kanayago.c
Direct Known Subclasses
ArgumentsNode, BeginNode, CallNode, ClassNode, Colon2Node, Colon3Node, ConstantDeclarationNode, ConstantNode, DefinitionNode, FunctionCallNode, IntegerNode, ListNode, ModuleNode, OperatorCallNode, SelfNode, VariableCallNode
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
#deconstruct ⇒ Object
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
|