Sha256: 6c028434a9c29c4d639389819b871ee73f048c900aae06fde6f80548ae5e6329
Contents?: true
Size: 657 Bytes
Versions: 1
Compression:
Stored size: 657 Bytes
Contents
require 'ostruct' class ClosedStruct < OpenStruct # :nodoc: def initialize(*args) if args.length == 1 super(args.first) else h = args.inject({}){ |memo, k| memo[k] = nil; memo } super(h) end @closed = true end def new_ostruct_member(name) if @closed raise RuntimeError, "cannot add members to closed struct" else super end end def method_missing(name, *args) raise NoMethodError, "undefined method '#{name}' for #{self}" end def id if @table.has_key?(:id) @table[:id] else method_missing(:id) end end def to_h @table.dup end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
cjbottaro-app_config-1.0.0 | lib/closed_struct.rb |