Class: Solargraph::Convention::StructDefinition::StructDefintionNode
- Inherits:
-
Object
- Object
- Solargraph::Convention::StructDefinition::StructDefintionNode
- Defined in:
- lib/solargraph/convention/struct_definition/struct_definition_node.rb
Overview
A node wrapper for a Struct definition via inheritance.
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
- #attributes ⇒ Array<Array(Parser::AST::Node, String)>
- #body_node ⇒ Parser::AST::Node
- #class_name ⇒ String
- #initialize(node) ⇒ Parser::AST::Node constructor
- #keyword_init? ⇒ Boolean
Constructor Details
#initialize(node) ⇒ Parser::AST::Node
50 51 52 |
# File 'lib/solargraph/convention/struct_definition/struct_definition_node.rb', line 50 def initialize(node) @node = node end |
Class Method Details
.valid?(node) ⇒ Boolean
28 29 30 31 32 |
# File 'lib/solargraph/convention/struct_definition/struct_definition_node.rb', line 28 def valid?(node) return false unless node&.type == :class struct_definition_node?(node.children[1]) end |
Instance Method Details
#attributes ⇒ Array<Array(Parser::AST::Node, String)>
60 61 62 63 64 65 |
# File 'lib/solargraph/convention/struct_definition/struct_definition_node.rb', line 60 def attributes struct_attribute_nodes.map do |struct_def_param| next unless struct_def_param.type == :sym [struct_def_param, struct_def_param.children[0].to_s] end.compact end |
#body_node ⇒ Parser::AST::Node
79 80 81 |
# File 'lib/solargraph/convention/struct_definition/struct_definition_node.rb', line 79 def body_node node.children[2] end |
#class_name ⇒ String
55 56 57 |
# File 'lib/solargraph/convention/struct_definition/struct_definition_node.rb', line 55 def class_name Parser::NodeMethods.unpack_name(node) end |
#keyword_init? ⇒ Boolean
67 68 69 70 71 72 73 74 75 76 |
# File 'lib/solargraph/convention/struct_definition/struct_definition_node.rb', line 67 def keyword_init? keyword_init_param = struct_attribute_nodes.find do |struct_def_param| struct_def_param.type == :hash && struct_def_param.children[0].type == :pair && struct_def_param.children[0].children[0].children[0] == :keyword_init end return false if keyword_init_param.nil? keyword_init_param.children[0].children[1].type == :true end |