Sha256: 44e82e806798e0c5e3d54b128fb30158270482cc0b74da2efd278e4cb425de16

Contents?: true

Size: 1.02 KB

Versions: 6

Compression:

Stored size: 1.02 KB

Contents

require 'ostruct'

class OpenStruct

  # Access a value in the OpenStruct by key, like a Hash.
  # This increases OpenStruct's "duckiness".
  #
  #   o = OpenStruct.new
  #   o.t = 4
  #   o['t']  #=> 4 
  #
  def [](key)
    key = key.to_sym unless key.is_a?(Symbol)
    @table[key]
  end

  # Set a value in the OpenStruct by key, like a Hash.
  #
  #   o = OpenStruct.new
  #   o['t'] = 4
  #   o.t  #=> 4 
  #
  def []=(key,val)
    raise TypeError, "can't modify frozen #{self.class}", caller(1) if self.frozen?
    key = key.to_sym unless key.is_a?(Symbol)
    @table[key]=val
  end

end


#  _____         _
# |_   _|__  ___| |_
#   | |/ _ \/ __| __|
#   | |  __/\__ \ |_
#   |_|\___||___/\__|
#
=begin test

  require 'test/unit'

  class TCOpenStruct < Test::Unit::TestCase

    def test_op_fetch
      o = OpenStruct.new( { :a => 1 } )
      assert_equal( 1, o[:a] )
    end

    def test_op_store
      o = OpenStruct.new( { :a => 1 } )
      assert_nothing_raised { o[:b] = 2 }
      assert_equal( 2, o.b )
    end

  end

=end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
facets-1.8.49 lib/facets/core/ostruct/op_fetch.rb
facets-1.8.0 lib/facets/core/ostruct/op_fetch.rb
facets-1.8.20 lib/facets/core/ostruct/op_fetch.rb
facets-1.8.51 lib/facets/core/ostruct/op_fetch.rb
facets-1.8.54 lib/facets/core/ostruct/op_fetch.rb
facets-1.8.8 lib/facets/core/ostruct/op_fetch.rb