Class: RuboCop::Cop::Layout::SpaceInsideBlockBraces

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
ConfigurableEnforcedStyle, RangeHelp, SurroundingSpace
Defined in:
lib/rubocop/cop/layout/space_inside_block_braces.rb

Overview

Checks that block braces have or don’t have surrounding space inside them on configuration. For blocks taking parameters, it checks that the left brace has or doesn’t have trailing space depending on configuration.

Examples:

EnforcedStyle: space (default)

# The `space` style enforces that block braces have # surrounding space.  # bad some_array.each {puts e} # good some_array.each { puts e }

EnforcedStyle: no_space

# The `no_space` style enforces that block braces don't # have surrounding space.  # bad some_array.each { puts e } # good some_array.each {puts e}

EnforcedStyleForEmptyBraces: no_space (default)

# The `no_space` EnforcedStyleForEmptyBraces style enforces that # block braces don't have a space in between when empty.  # bad some_array.each { } some_array.each { } some_array.each { } # good some_array.each {}

EnforcedStyleForEmptyBraces: space

# The `space` EnforcedStyleForEmptyBraces style enforces that # block braces have at least a space in between when empty.  # bad some_array.each {} # good some_array.each { } some_array.each { } some_array.each { }

SpaceBeforeBlockParameters: true (default)

# The SpaceBeforeBlockParameters style set to `true` enforces that # there is a space between `{` and `|`. Overrides `EnforcedStyle` # if there is a conflict.  # bad [1, 2, 3].each {|n| n * 2 } # good [1, 2, 3].each { |n| n * 2 }

SpaceBeforeBlockParameters: false

# The SpaceBeforeBlockParameters style set to `false` enforces that # there is no space between `{` and `|`. Overrides `EnforcedStyle` # if there is a conflict.  # bad [1, 2, 3].each { |n| n * 2 } # good [1, 2, 3].each {|n| n * 2 }

Constant Summary

Constants included from RangeHelp

RangeHelp::BYTE_ORDER_MARK, RangeHelp::NOT_GIVEN

Constants included from SurroundingSpace

SurroundingSpace::NO_SPACE_COMMAND, SurroundingSpace::SINGLE_SPACE_REGEXP, SurroundingSpace::SPACE_COMMAND

Constants inherited from Base

Base::RESTRICT_ON_SEND

Instance Attribute Summary

Attributes inherited from Base

#config, #processed_source

Class Method Summary collapse

Instance Method Summary collapse

Methods included from AutoCorrector

support_autocorrect?

Methods included from ConfigurableEnforcedStyle

#alternative_style, #alternative_styles, #ambiguous_style_detected, #correct_style_detected, #detected_style, #detected_style=, #no_acceptable_style!, #no_acceptable_style?, #opposite_style_detected, #style, #style_configured?, #style_detected, #style_parameter_name, #supported_styles, #unexpected_style_detected

Methods inherited from Base

#active_support_extensions_enabled?, #add_global_offense, #add_offense, #always_autocorrect?, badge, #begin_investigation, #callbacks_needed, callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #contextual_autocorrect?, #cop_config, cop_name, #cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, #inspect, joining_forces, lint?, match?, #message, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #parse, #parser_engine, #ready, #relevant_file?, requires_gem, #string_literals_frozen_by_default?, support_autocorrect?, support_multiple_source?, #target_gem_version, #target_rails_version, #target_ruby_version

Methods included from ExcludeLimit

#exclude_limit

Methods included from AutocorrectLogic

#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #autocorrect_with_disable_uncorrectable?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

silence_warnings

Constructor Details

This class inherits a constructor from RuboCop::Cop::Base

Class Method Details

.autocorrect_incompatible_withObject

 85 86 87
# File 'lib/rubocop/cop/layout/space_inside_block_braces.rb', line 85 def self.autocorrect_incompatible_with [Style::BlockDelimiters] end

Instance Method Details

#on_block(node) ⇒ Object Also known as: on_numblock, on_itblock

 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
# File 'lib/rubocop/cop/layout/space_inside_block_braces.rb', line 89 def on_block(node) return if node.keywords? # Do not register an offense for multi-line empty braces. That means  # preventing autocorrection to single-line empty braces. It will  # conflict with autocorrection by `Layout/SpaceInsideBlockBraces` cop  # if autocorrected to a single-line empty braces.  # See: https://github.com/rubocop/rubocop/issues/7363  return if node.body.nil? && node.multiline? left_brace = node.loc.begin right_brace = node.loc.end check_inside(node, left_brace, right_brace) end