Sha256: e4b5c49525df7d7d9b497f8175f23b8348ad3d2f07824658919ad5176523306e

Contents?: true

Size: 1.43 KB

Versions: 2

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

module RuboCop
  module Cop
    module Style
      # Checks for presence or absence of braces around hash literal as a last
      # array item depending on configuration.
      #
      # @example EnforcedStyle: braces (default)
      #   # bad
      #   [1, 2, one: 1, two: 2]
      #
      #   # good
      #   [1, 2, { one: 1, two: 2 }]
      #
      # @example EnforcedStyle: no_braces
      #   # bad
      #   [1, 2, { one: 1, two: 2 }]
      #
      #   # good
      #   [1, 2, one: 1, two: 2]
      #
      class HashAsLastArrayItem < Base
        include ConfigurableEnforcedStyle
        extend AutoCorrector

        def on_hash(node)
          return unless node.parent&.array_type?

          if braces_style?
            check_braces(node)
          else
            check_no_braces(node)
          end
        end

        private

        def check_braces(node)
          return if node.braces?

          add_offense(node, message: 'Wrap hash in `{` and `}`.') do |corrector|
            corrector.wrap(node, '{', '}')
          end
        end

        def check_no_braces(node)
          return unless node.braces?

          add_offense(node, message: 'Omit the braces around the hash.') do |corrector|
            corrector.remove(node.loc.begin)
            corrector.remove(node.loc.end)
          end
        end

        def braces_style?
          style == :braces
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
rubocop-0.88.0 lib/rubocop/cop/style/hash_as_last_array_item.rb
rbhint-0.87.1.rc1 lib/rubocop/cop/style/hash_as_last_array_item.rb