class Discombobulator::SwapGlobals

Public Class Methods

call(meth, *args, &block) click to toggle source
# File lib/discombobulator/swap_globals.rb, line 2
def self.call(meth, *args, &block)
  self.new.call(meth, *args, &block)
end

Public Instance Methods

call(meth, *args, &block) click to toggle source
# File lib/discombobulator/swap_globals.rb, line 6
def call(meth, *args, &block)
  name1, name2 = global_variables.shuffle.take(2)
  val1, val2 = get_global(name1), get_global(name2)
  set_global(name1, val2)
  set_global(name2, val1)
  Discombobulator.new
rescue NameError, SyntaxError, TypeError, ArgumentError
  retry
end

Private Instance Methods

get_global(name) click to toggle source
# File lib/discombobulator/swap_globals.rb, line 17
def get_global(name)
  eval(name.to_s)
end
set_global(name, value) click to toggle source
# File lib/discombobulator/swap_globals.rb, line 21
def set_global(name, value)
  if $DISCOMBOBULATOR_SAFETY_FEATURE == 42
    puts "Setting global #{name} to #{value.inspect}"
  else
    eval("#{name} = value")
  end
end