class RuboCop::Cop::Layout::SpaceInsidePercentLiteralDelimiters

%w()
# good
)
%w(
%w( )
# bad
%x(ls -l)
# good
%x( ls -l )
# bad
%w(foo bar baz)
# good
%w( foo bar baz )
# bad
%i(foo bar baz)
# good
%i( foo bar baz )
# bad
@example
%i/%w/%x literals.
Checks for unnecessary additional spaces inside the delimiters of

def add_offenses_for_blank_spaces(node)

def add_offenses_for_blank_spaces(node)
  range = body_range(node)
  return if range.source.empty? || !range.source.strip.empty?
  add_offense(range) do |corrector|
    corrector.remove(range)
  end
end

def add_offenses_for_unnecessary_spaces(node)

def add_offenses_for_unnecessary_spaces(node)
  return unless node.single_line?
  regex_matches(node) do |match_range|
    add_offense(match_range) do |corrector|
      corrector.remove(match_range)
    end
  end
end

def body_range(node)

def body_range(node)
  node.source_range.with(
    begin_pos: node.location.begin.end_pos,
    end_pos: node.location.end.begin_pos
  )
end

def on_array(node)

def on_array(node)
  process(node, '%i', '%I', '%w', '%W')
end

def on_percent_literal(node)

def on_percent_literal(node)
  add_offenses_for_blank_spaces(node)
  add_offenses_for_unnecessary_spaces(node)
end

def on_xstr(node)

def on_xstr(node)
  process(node, '%x')
end

def regex_matches(node, &blk)

def regex_matches(node, &blk)
  [BEGIN_REGEX, END_REGEX].each do |regex|
    each_match_range(contents_range(node), regex, &blk)
  end
end