Sha256: 11500e1b8d864663fc793752e8f9149b30e7872eca6c1a7442b8bf310364efb6
Contents?: true
Size: 848 Bytes
Versions: 1
Compression:
Stored size: 848 Bytes
Contents
# frozen_string_literal: false require 'ostruct' class OpenStruct def initialize(hash = nil, &block) @table = if block && block.arity == 2 Hash.new(&block) else {} end if hash hash.each do |key, val| @table[key.to_sym] = val new_ostruct_member(key) end end yield self if block && block.arity == 1 end def [](key) key = key.to_sym unless key.is_a?(Symbol) @table[key] end def []=(key, val) raise TypeError, "can't modify frozen #{self.class}", caller(1) if frozen? key = key.to_sym unless key.is_a?(Symbol) @table[key] = val end def attributes each_pair.with_object({}) { |(key, val), hash| hash[key] = val } end def replace(args) args.each_pair { |key, val| send("#{key}=", val) } end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
lite-ruby-1.0.2 | lib/lite/ruby/open_struct.rb |