class OverridesInstance
Public Class Methods
new(overrides, obj, ind = 0)
click to toggle source
# File lib/everyday-cli-utils/override.rb, line 36 def initialize(overrides, obj, ind = 0) @overrides = overrides @obj = obj @ind = ind end
Public Instance Methods
[](ind)
click to toggle source
# File lib/everyday-cli-utils/override.rb, line 42 def [](ind) OverridesInstance.new(@overrides, @obj, @ind - ind) end
call_override(method_symbol, *args, &block)
click to toggle source
# File lib/everyday-cli-utils/override.rb, line 46 def call_override(method_symbol, *args, &block) @overrides.has_key?(method_symbol.to_sym) ? -> { overrides, ind, ovin = get_overrides_and_inds(method_symbol) call_override_at_index(overrides, ind, ovin, args, &block) }.call : @obj.send(method_symbol.to_sym, *args, &block) end
call_override_at_index(overrides, ind, ovin, args, &block)
click to toggle source
# File lib/everyday-cli-utils/override.rb, line 53 def call_override_at_index(overrides, ind, ovin, args, &block) Thread.current["overrides_ind_#{@obj.__id__}"] = @ind + ovin - 1 rv = overrides[ind].bind(@obj).call(*args, &block) Thread.current["overrides_ind_#{@obj.__id__}"] = ovin rv end
get_overrides_and_inds(method_symbol)
click to toggle source
# File lib/everyday-cli-utils/override.rb, line 60 def get_overrides_and_inds(method_symbol) overrides = @overrides[method_symbol.to_sym] ind = overrides.count + (@ind - 1) ovin = Thread.current["overrides_ind_#{@obj.__id__}"] || 0 ind += ovin return overrides, ind, ovin end
method_missing(symbol, *args, &block)
click to toggle source
# File lib/everyday-cli-utils/override.rb, line 68 def method_missing(symbol, *args, &block) call_override(symbol, *args, &block) end