Class: RuboCop::Cop::Style::RbsInline::DataClassCommentAlignment

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
ClassCommentAlignment
Defined in:
lib/rubocop/cop/style/rbs_inline/data_class_comment_alignment.rb,
sig/rubocop/cop/style/rbs_inline/data_class_comment_alignment.rbs

Overview

Checks that #: inline type annotations in Data.define blocks are aligned.

Each #: annotation comment should start at the same column, determined by the longest attribute name (plus trailing comma). Folded Data.define calls (where attributes are not one per line) are excluded.

Examples:

# bad
MethodEntry = Data.define(
  :name, #: Symbol
  :node,       #: Parser::AST::Node
  :visibility  #: Symbol
)

# good
MethodEntry = Data.define(
  :name,       #: Symbol
  :node,       #: Parser::AST::Node
  :visibility  #: Symbol
)

Constant Summary collapse

MSG =

Returns:

  • (::String)
"Misaligned inline type annotation for Data attribute."

Instance Method Summary collapse

Methods included from ClassCommentAlignment

#check_annotation_alignment, #check_comment_alignment, #correct_alignment

Methods included from DataStructHelper

#annotation_column, #attr_argument?, #attr_arguments, #build_multiline_replacement, #find_regular_comment, #folded?, #inline_type_annotation?, #inline_type_comment, #longest_argname

Methods included from SourceCodeHelper

#annotation_range, #blank_line?, #char_at, #character_offset, #comment_at, #comment_range, #line_range, #location_to_range, #source_code_at

Methods included from ASTUtils

#end_line, #name_location, #source!, #value_to_sym

Instance Method Details

#on_send(node) ⇒ void

This method returns an undefined value.

Parameters:

  • node (RuboCop::AST::SendNode)


35
36
37
38
39
# File 'lib/rubocop/cop/style/rbs_inline/data_class_comment_alignment.rb', line 35

def on_send(node) #: void
  return unless struct_like_class?(node)

  check_comment_alignment(node)
end

#struct_like_class?(node) ⇒ Boolean

Parameters:

  • node (RuboCop::AST::SendNode)

Returns:

  • (Boolean)


44
45
46
47
48
# File 'lib/rubocop/cop/style/rbs_inline/data_class_comment_alignment.rb', line 44

def struct_like_class?(node) #: bool
  return false unless node.method_name == :define

  (r = node.receiver).is_a?(RuboCop::AST::ConstNode) && r.short_name == :Data
end