Sha256: 76c4bd3c9f52d7f962f51d2ce9ba08f3b9977f2b720557c9dd27701bb81f9058
Contents?: true
Size: 1.48 KB
Versions: 13
Compression:
Stored size: 1.48 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Style # Checks for unnecessary additional spaces inside the delimiters of # %i/%w/%x literals. # # @example # @good # %i(foo bar baz) # # @bad # %w( foo bar baz ) # # @bad # %x( ls -l ) class SpaceInsidePercentLiteralDelimiters < Cop include MatchRange include PercentLiteral MSG = 'Do not use spaces inside percent literal delimiters.'.freeze BEGIN_REGEX = /\A( +)/ END_REGEX = /(?<!\\)( +)\z/ def on_array(node) process(node, '%i', '%I', '%w', '%W') end def on_percent_literal(node) add_offenses_for_unnecessary_spaces(node) end def on_xstr(node) add_offenses_for_unnecessary_spaces(node) end def autocorrect(node) lambda do |corrector| regex_matches(node) do |match_range| corrector.remove(match_range) end end end private def add_offenses_for_unnecessary_spaces(node) return unless node.single_line? regex_matches(node) do |match_range| add_offense(node, match_range, MSG) end end def regex_matches(node, &blk) [BEGIN_REGEX, END_REGEX].each do |regex| each_match_range(contents_range(node), regex, &blk) end end end end end end
Version data entries
13 entries across 13 versions & 2 rubygems