Class: Object

Inherits:
BasicObject
Defined in:
lib/everyday-cli-utils/override.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.class_overrides(s) ⇒ Object



81
82
83
# File 'lib/everyday-cli-utils/override.rb', line 81

def class_overrides(s)
  @overrides && @overrides.get(s)
end

.override(method_name, &block) ⇒ Object



93
94
95
96
97
98
99
100
# File 'lib/everyday-cli-utils/override.rb', line 93

def override(method_name, &block)
  self.class_eval {
    original_method     = instance_method(method_name.to_sym)
    self.true_overrides ||= MethodOverrides.new
    self.true_overrides.store_override(method_name.to_sym, original_method)
    self.create_method(method_name.to_sym, &block)
  }
end

.true_overridesObject



85
86
87
# File 'lib/everyday-cli-utils/override.rb', line 85

def true_overrides
  @overrides
end

.true_overrides=(overrides) ⇒ Object



89
90
91
# File 'lib/everyday-cli-utils/override.rb', line 89

def true_overrides=(overrides)
  @overrides = overrides
end

Instance Method Details

#create_method(name, &block) ⇒ Object



52
53
54
# File 'lib/everyday-cli-utils/override.rb', line 52

def create_method(name, &block)
  self.send(:define_method, name, &block)
end

#override(method_name, &block) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/everyday-cli-utils/override.rb', line 68

def override(method_name, &block)
  s2 = self
  class << self
    self
  end.class_eval {
    original_method     = instance_method(method_name.to_sym)
    s2.true_overrides ||= MethodOverrides.new
    s2.true_overrides.store_override(method_name.to_sym, original_method)
    self.create_method(method_name.to_sym, &block)
  }
end

#overridesObject



56
57
58
# File 'lib/everyday-cli-utils/override.rb', line 56

def overrides
  (@overrides && @overrides.get(self)) || self.class.class_overrides(self)
end

#true_overridesObject



60
61
62
# File 'lib/everyday-cli-utils/override.rb', line 60

def true_overrides
  @overrides
end

#true_overrides=(overrides) ⇒ Object



64
65
66
# File 'lib/everyday-cli-utils/override.rb', line 64

def true_overrides=(overrides)
  @overrides = overrides
end