class RuboCop::Cop::Style::SpecialGlobalVars
This cop looks for uses of Perl-style global variables.
def autocorrect(node)
def autocorrect(node) lambda do |corrector| global_var, = *node parent_type = node.parent ? node.parent.type : nil if [:dstr, :xstr, :regexp].include?(parent_type) corrector.replace(node.loc.expression, "{#{PREFERRED_VARS[global_var].first}}") else corrector.replace(node.loc.expression, PREFERRED_VARS[global_var].first) end 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