Class: MethodOverrides

Inherits:
Object show all
Defined in:
lib/everyday-cli-utils/override.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMethodOverrides

Returns a new instance of MethodOverrides.



2
3
4
# File 'lib/everyday-cli-utils/override.rb', line 2

def initialize
  @overrides = {}
end

Class Method Details

.register_override(s, s2, method_name, &block) ⇒ Object



20
21
22
23
24
25
# File 'lib/everyday-cli-utils/override.rb', line 20

def register_override(s, s2, method_name, &block)
  s.class_eval {
    MethodOverrides.store_true_override(s, s2, method_name)
    s.create_method(method_name.to_sym, &block)
  }
end

.store_true_override(s, s2, method_name) ⇒ Object



27
28
29
30
31
# File 'lib/everyday-cli-utils/override.rb', line 27

def store_true_override(s, s2, method_name)
  original_method   = s.instance_method(method_name.to_sym)
  s2.true_overrides ||= MethodOverrides.new
  s2.true_overrides.store_override(method_name.to_sym, original_method)
end

Instance Method Details

#empty?(method_name) ⇒ Boolean

Returns:

  • (Boolean)


6
7
8
# File 'lib/everyday-cli-utils/override.rb', line 6

def empty?(method_name)
  @overrides[method_name].nil? || @overrides[method_name].empty?
end

#get(obj) ⇒ Object



15
16
17
# File 'lib/everyday-cli-utils/override.rb', line 15

def get(obj)
  OverridesInstance.new(@overrides, obj)
end

#store_override(method_name, method) ⇒ Object



10
11
12
13
# File 'lib/everyday-cli-utils/override.rb', line 10

def store_override(method_name, method)
  @overrides[method_name] ||= []
  @overrides[method_name] << method
end