Class: Solargraph::Convention::DataDefinition::DataDefintionNode

Inherits:
Object
  • Object
show all
Defined in:
lib/solargraph/convention/data_definition/data_definition_node.rb

Overview

A node wrapper for a Data definition via inheritance.

Examples:

class MyData < Data.new(:bar, :baz)
  def foo
  end
end

Direct Known Subclasses

DataAssignmentNode

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node) ⇒ DataDefintionNode

Returns a new instance of DataDefintionNode.

Parameters:

  • node (Parser::AST::Node)


52
53
54
# File 'lib/solargraph/convention/data_definition/data_definition_node.rb', line 52

def initialize(node)
  @node = node
end

Class Method Details

.match?(node) ⇒ Boolean

Examples:

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)))

Parameters:

  • node (Parser::AST::Node)

Returns:

  • (Boolean)


30
31
32
33
34
# 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

Instance Method Details

#attributesArray<Array(Parser::AST::Node, String)>

Returns:

  • (Array<Array(Parser::AST::Node, String)>)


62
63
64
65
66
67
# 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

#body_nodeParser::AST::Node

Returns:

  • (Parser::AST::Node)


70
71
72
# File 'lib/solargraph/convention/data_definition/data_definition_node.rb', line 70

def body_node
  node.children[2]
end

#class_nameString

Returns:

  • (String)


57
58
59
# File 'lib/solargraph/convention/data_definition/data_definition_node.rb', line 57

def class_name
  Parser::NodeMethods.unpack_name(node)
end