OpenStruct (Class)

In: ostruct.rb
Parent: Object

OpenStruct allows you to create data objects and set arbitrary attributes. For example:

  require 'ostruct'

  record = OpenStruct.new
  record.name    = "John Smith"
  record.age     = 70
  record.pension = 300

  puts record.name     # -> "John Smith"
  puts record.address  # -> nil

It is like a hash with a different way to access the data. In fact, it is implemented with a hash, and you can initialize it with one.

  hash = { "country" => "Australia", :population => 20_000_000 }
  data = OpenStruct.new(hash)

  p data        # -> <OpenStruct country="Australia" population=20000000>

Methods

==   delete_field   inspect   new  

Public Class methods

Create a new OpenStruct object. The optional hash, if given, will generate attributes and values. For example.

  require 'ostruct'
  hash = { "country" => "Australia", :population => 20_000_000 }
  data = OpenStruct.new(hash)

  p data        # -> <OpenStruct country="Australia" population=20000000>

By default, the resulting OpenStruct object will have no attributes.

[Source]

# File ostruct.rb, line 46
  def initialize(hash=nil)
    @table = {}
    if hash
      for k,v in hash
        @table[k.to_sym] = v
      end
    end
  end

Public Instance methods

Compare this object and other for equality.

[Source]

# File ostruct.rb, line 98
  def ==(other)
    return false unless(other.kind_of?(OpenStruct))
    return @table == other.table
  end

Remove the named field from the object.

[Source]

# File ostruct.rb, line 77
  def delete_field(name)
    @table.delete name.to_sym
  end

Returns a string containing a detailed summary of the keys and values.

[Source]

# File ostruct.rb, line 84
  def inspect
    str = "<#{self.class}"
    for k,v in @table
      str << " #{k}=#{v.inspect}"
    end
    str << ">"
  end

[Validate]