Module: CrazyPills

Defined in:
lib/crazy_pills.rb,
lib/crazy_pills/version.rb

Constant Summary collapse

THINGS_TO_CRAZY =
[
  Array,
  Exception,
  File,
  Float,
  Hash,
  Numeric,
  Object,
  String,
]
VERSION =
"0.0.2"

Class Method Summary collapse

Class Method Details

.aliased(*args) ⇒ Object



23
24
25
26
27
28
# File 'lib/crazy_pills.rb', line 23

def self.aliased(*args)
  @aliased ||= []
  @aliased.concat(args) if args
  puts "Aliased #{args}" if ENV['DEBUG']
  @aliased
end

.explainObject



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/crazy_pills.rb', line 30

def self.explain
  made_nil.each do |nilled|
    puts "Made \#{nilled} just return nil\n"
  end

  aliased.each_slice(2) do |slice|
    puts "Aliased \#{slice.first} to \#{slice.last}\n"
  end
end

.lets_get_crazy!(*classes) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/crazy_pills.rb', line 44

def self.lets_get_crazy!(*classes)
  class_to_crazy = classes.flatten.sample

  method_to_crazy = class_to_crazy.instance_methods.sample

  if [true, false].sample
    self.made_nil("#{class_to_crazy}##{method_to_crazy}")

    class_to_crazy.class_eval do
      define_method(method_to_crazy) do
        nil
      end
    end
  else
    alias_to = class_to_crazy.instance_methods.sample
    self.aliased("#{class_to_crazy}##{method_to_crazy}", "#{class_to_crazy}##{alias_to}")

    class_to_crazy.class_eval do
      alias_method method_to_crazy, alias_to
    end
  end
end

.made_nil(name = nil) ⇒ Object



67
68
69
70
71
72
# File 'lib/crazy_pills.rb', line 67

def self.made_nil(name = nil)
  @made_nil ||= []
  @made_nil << name if name
  puts "Nil-ify #{name}" if ENV['DEBUG']
  @made_nil
end