class RuboCop::Cop::Style::SpecialGlobalVars

This cop looks for uses of Perl-style global variables.

def autocorrect(node)

def autocorrect(node)
  @corrections << lambda do |corrector|
    global_var, = *node
    corrector.replace(node.loc.expression,
                      PREFERRED_VARS[global_var].first)
  end
end

def message(node)

def message(node)
  global_var, = *node
  regular, english = PREFERRED_VARS[global_var].partition do |var|
    NON_ENGLISH_VARS.include? var
  end
  # For now, we assume that lists are 2 items or less. Easy grammar!
  regular_msg = regular.join('` or `')
  english_msg = english.join('` or `')
  if regular.length > 0 && english.length > 0
    format(MSG_BOTH, english_msg, regular_msg, global_var)
  elsif regular.length > 0
    format(MSG_REGULAR, regular_msg, global_var)
  elsif english.length > 0
    format(MSG_ENGLISH, english_msg, global_var)
  else
    fail 'Bug in SpecialGlobalVars - global var w/o preferred vars!'
  end
end

def on_gvar(node)

def on_gvar(node)
  global_var, = *node
  add_offense(node, :expression) if PREFERRED_VARS[global_var]
end