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