diff options
Diffstat (limited to 'lib/ostruct.rb')
| -rw-r--r-- | lib/ostruct.rb | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/lib/ostruct.rb b/lib/ostruct.rb deleted file mode 100644 index 50a7ceca12..0000000000 --- a/lib/ostruct.rb +++ /dev/null @@ -1,48 +0,0 @@ -# ostruct.rb - Python Style Object -# just assign to create field -# -# s = OpenStruct.new -# s.foo = 25 -# p s.foo -# s.bar = 2 -# p s.bar -# p s - -class OpenStruct - def initialize(hash=nil) - @table = {} - if hash - for k,v in hash - @table[k.to_sym] = v - end - end - end - - def method_missing(mid, *args) - mname = mid.id2name - len = args.length - if mname =~ /=$/ - if len != 1 - raise ArgumentError, "wrong # of arguments (#{len} for 1)", caller(1) - end - mname.chop! - @table[mname.intern] = args[0] - elsif len == 0 - @table[mid] - else - raise NoMethodError, "undefined method `#{mname}' for #{self}", caller(1) - end - end - - def delete_field(name) - @table.delete name.to_sym - end - - def inspect - str = "<#{self.class}" - for k,v in @table - str << " #{k}=#{v.inspect}" - end - str << ">" - end -end |
