class Solargraph::Convention::DataDefinition::DataDefintionNode
A node wrapper for a Data definition via inheritance. @example
class MyData < Data.new(:bar, :baz) def foo end end
Attributes
@return [Parser::AST::Node]
Public Class Methods
Source
# File lib/solargraph/convention/data_definition/data_definition_node.rb, line 30 def match?(node) return false unless node&.type == :class data_definition_node?(node.children[1]) end
@example
s(:class,
s(:const, nil, :Foo),
s(:send,
s(:const, nil, :Data), :define,
s(:sym, :bar),
s(:sym, :baz)),
s(:hash,
s(:pair,
s(:sym, :keyword_init),
s(:true)))),
s(:def, :foo,
s(:args),
s(:send, nil, :bar)))
@param node [Parser::AST::Node]
Source
# File lib/solargraph/convention/data_definition/data_definition_node.rb, line 52 def initialize(node) @node = node end
@param node [Parser::AST::Node]
Private Class Methods
Source
# File lib/solargraph/convention/data_definition/data_definition_node.rb, line 40 def data_definition_node?(data_node) return false unless data_node.is_a?(::Parser::AST::Node) return false unless data_node&.type == :send return false unless data_node.children[0]&.type == :const return false unless data_node.children[0].children[1] == :Data return false unless data_node.children[1] == :define true end
@param data_node [Parser::AST::Node] @return [Boolean]
Public Instance Methods
Source
# File lib/solargraph/convention/data_definition/data_definition_node.rb, line 62 def attributes data_attribute_nodes.map do |data_def_param| next unless data_def_param.type == :sym [data_def_param, data_def_param.children[0].to_s] end.compact end
@return [Array<Array(Parser::AST::Node, String)>]
Source
# File lib/solargraph/convention/data_definition/data_definition_node.rb, line 70 def body_node node.children[2] end
@return [Parser::AST::Node]
Source
# File lib/solargraph/convention/data_definition/data_definition_node.rb, line 57 def class_name Parser::NodeMethods.unpack_name(node) end
@return [String]
Private Instance Methods
Source
# File lib/solargraph/convention/data_definition/data_definition_node.rb, line 85 def data_attribute_nodes data_node.children[2..-1] end
@return [Array<Parser::AST::Node>]
Source
# File lib/solargraph/convention/data_definition/data_definition_node.rb, line 80 def data_node node.children[1] end
@return [Parser::AST::Node, nil]