Class: RuboCop::Cop::Layout::SpaceAroundOperators
- Extended by:
- AutoCorrector
- Includes:
- PrecedingFollowingAlignment, RangeHelp, RationalLiteral
- Defined in:
- lib/rubocop/cop/layout/space_around_operators.rb
Overview
Checks that operators have space around them, except for ** which should or shouldn’t have surrounding space depending on configuration. It allows vertical alignment consisting of one or more whitespace around operators.
This cop has ‘AllowForAlignment` option. When `true`, allows most uses of extra spacing if the intent is to align with an operator on the previous or next line, not counting empty lines or comment lines.
Constant Summary collapse
- IRREGULAR_METHODS =
i[[] ! []=].freeze
- EXCESSIVE_SPACE =
' '
Constants inherited from Base
Constants included from Util
Instance Attribute Summary
Attributes inherited from Base
Class Method Summary collapse
Instance Method Summary collapse
- #on_assignment(node) ⇒ Object (also: #on_lvasgn, #on_masgn, #on_ivasgn, #on_cvasgn, #on_gvasgn, #on_or_asgn, #on_and_asgn)
- #on_binary(node) ⇒ Object (also: #on_or, #on_and, #on_class)
- #on_if(node) ⇒ Object
- #on_pair(node) ⇒ Object
- #on_resbody(node) ⇒ Object
- #on_send(node) ⇒ Object
- #on_special_asgn(node) ⇒ Object (also: #on_casgn, #on_op_asgn)
Methods included from AutoCorrector
Methods inherited from Base
#add_global_offense, #add_offense, badge, callbacks_needed, #callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, #cop_name, cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, joining_forces, lint?, match?, #message, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #ready, #relevant_file?, support_autocorrect?, support_multiple_source?, #target_rails_version, #target_ruby_version
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?
Methods included from IgnoredNode
#ignore_node, #ignored_node?, #part_of_ignored_node?
Methods included from Util
add_parentheses, args_begin, args_end, begins_its_line?, comment_line?, comment_lines?, double_quotes_required?, escape_string, first_part_of_call_chain, indent, interpret_string_escapes, line_range, needs_escaping?, on_node, parentheses?, same_line?, to_string_literal, to_supported_styles, trim_string_interporation_escape_character
Methods included from PathUtil
absolute?, hidden_dir?, hidden_file?, hidden_file_in_not_hidden_dir?, match_path?, maybe_hidden_file?, relative_path, smart_path
Constructor Details
This class inherits a constructor from RuboCop::Cop::Base
Class Method Details
.autocorrect_incompatible_with ⇒ Object
62 63 64 |
# File 'lib/rubocop/cop/layout/space_around_operators.rb', line 62 def self.autocorrect_incompatible_with [Style::SelfAssignment] end |
Instance Method Details
#on_assignment(node) ⇒ Object Also known as: on_lvasgn, on_masgn, on_ivasgn, on_cvasgn, on_gvasgn, on_or_asgn, on_and_asgn
101 102 103 104 105 106 107 |
# File 'lib/rubocop/cop/layout/space_around_operators.rb', line 101 def on_assignment(node) _, rhs, = *node return unless rhs check_operator(:assignment, node.loc.operator, rhs.source_range) end |
#on_binary(node) ⇒ Object Also known as: on_or, on_and, on_class
109 110 111 112 113 114 115 |
# File 'lib/rubocop/cop/layout/space_around_operators.rb', line 109 def on_binary(node) _, rhs, = *node return unless rhs check_operator(:binary, node.loc.operator, rhs.source_range) end |
#on_if(node) ⇒ Object
74 75 76 77 78 79 |
# File 'lib/rubocop/cop/layout/space_around_operators.rb', line 74 def on_if(node) return unless node.ternary? check_operator(:if, node.loc.question, node.if_branch.source_range) check_operator(:if, node.loc.colon, node.else_branch.source_range) end |
#on_pair(node) ⇒ Object
66 67 68 69 70 71 72 |
# File 'lib/rubocop/cop/layout/space_around_operators.rb', line 66 def on_pair(node) return unless node.hash_rocket? return if hash_table_style? && !node.parent.pairs_on_same_line? check_operator(:pair, node.loc.operator, node.source_range) end |
#on_resbody(node) ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/rubocop/cop/layout/space_around_operators.rb', line 81 def on_resbody(node) return unless node.loc.assoc _, variable, = *node check_operator(:resbody, node.loc.assoc, variable.source_range) end |
#on_send(node) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/rubocop/cop/layout/space_around_operators.rb', line 89 def on_send(node) return if rational_literal?(node) if node.setter_method? on_special_asgn(node) elsif regular_operator?(node) check_operator(:send, node.loc.selector, node.first_argument.source_range) end end |
#on_special_asgn(node) ⇒ Object Also known as: on_casgn, on_op_asgn
117 118 119 120 121 122 123 |
# File 'lib/rubocop/cop/layout/space_around_operators.rb', line 117 def on_special_asgn(node) _, _, right, = *node return unless right check_operator(:special_asgn, node.loc.operator, right.source_range) end |