class RuboCop::Cop::Performance::RedundantSplitRegexpArgument

‘a,b,c’.split(‘,’)
# good
’a,b,c’.split(/,/)
# bad
@example
a deterministic regexp to a string.
Identifies places where ‘split` argument can be replaced from

def determinist_regexp?(regexp_node)

def determinist_regexp?(regexp_node)
  DETERMINISTIC_REGEX.match?(regexp_node.source)
end

def on_send(node)

def on_send(node)
  return unless (regexp_node = split_call_with_regexp?(node))
  return if regexp_node.ignore_case? || regexp_node.content == ' '
  return unless determinist_regexp?(regexp_node)
  add_offense(regexp_node) do |corrector|
    new_argument = replacement(regexp_node)
    corrector.replace(regexp_node, "\"#{new_argument}\"")
  end
end

def replacement(regexp_node)

def replacement(regexp_node)
  regexp_content = regexp_node.content
  stack = []
  chars = regexp_content.chars.each_with_object([]) do |char, strings|
    if stack.empty? && char == '\\'
      stack.push(char)
    else
      strings << "#{stack.pop}#{char}"
    end
  end
  chars.map do |char|
    char = char.dup
    char.delete!('\\') unless STR_SPECIAL_CHARS.include?(char)
    char
  end.join
end