module ObservableObject::DeepWrap

Constants

NonWrappable

Public Class Methods

is_unwrappable(elem) click to toggle source
# File lib/observable_object.rb, line 25
def self.is_unwrappable(elem)
  NonWrappable.any? { |t| elem.is_a?(t) }
end
map_obj(obj,notifier) click to toggle source
# File lib/observable_object.rb, line 15
def self.map_obj(obj,notifier)
  case obj
    when Array then obj.map { |x| wrap_elem(x,notifier) }
    when Set then obj.clone.map! { |x| wrap_elem(x,notifier) }
    when Hash then obj.map { |k,v| [ k, wrap_elem(v,notifier) ] }.to_h
    else obj
  end 
end
wrap_elem(elem,notifier) click to toggle source
# File lib/observable_object.rb, line 28
def self.wrap_elem(elem,notifier)
  is_unwrappable(elem) ? elem : Wrapper.new(elem,:detect,true,notifier)
end