OpenCascade

OpenCascade is subclass of OpenObject. It differs in a few significant ways.

The main reason this class is labeled "cascade", every internal Hash is trandformed into an OpenCascade dynamically upon access. This makes it easy to create "cascading" references.

  h = { :x => { :y => { :z => 1 } } }
  c = OpenCascade[h]
  c.x.y.z  #=> 1
Methods
Public Instance methods
method_missing( sym, arg=nil )
# File lib/facets/opencascade.rb, line 76
  def method_missing( sym, arg=nil )
    type = sym.to_s[-1,1]
    name = sym.to_s.gsub(/[=!?]$/, '').to_sym
    if type == '='
      self[name] = arg
    elsif type == '!'
      self[name] = arg
      self
    else
      val = self[name]
      val = object_class[val] if Hash === val
      val
    end
  end