Sha256: f8ad061cadfd55620418bcc4c2c0772ff6f5fe108308ed7fcc0948e8fb906f07

Contents?: true

Size: 698 Bytes

Versions: 44

Compression:

Stored size: 698 Bytes

Contents

# A module which adds some generators for hash based accessors.
module HashAttrs

  def hash_reader(hash_sym, syms)
    syms.each do |id|
      id = id.to_s.downcase
      func = Proc.new do
        hash = instance_variable_get(hash_sym)
        hash[id.to_sym] 
      end

      self.send(:define_method, id, func)
    end
  end

  def hash_writer(hash_sym, syms)
    syms.each do |id|
      id = id.to_s.downcase

      func = Proc.new do |val| 
        hash = instance_variable_get(hash_sym)
        hash[id.to_sym] = val 
      end

      self.send(:define_method, id+'=', func)
    end
  end

  def hash_accessor(hash, *syms)
    hash_reader(hash, syms)
    hash_writer(hash, syms)
  end
end

Version data entries

44 entries across 44 versions & 4 rubygems

Version Path
curzonj-icalendar-1.0.2.1 lib/hash_attrs.rb
curzonj-icalendar-1.0.2 lib/hash_attrs.rb
curzonj-icalendar-1.1.0.2 lib/hash_attrs.rb
paulsm-icalendar-1.1.0.4 lib/hash_attrs.rb
sdague-icalendar-1.0.2.1 lib/hash_attrs.rb
sdague-icalendar-1.0.2.2 lib/hash_attrs.rb
sdague-icalendar-1.0.2.3 lib/hash_attrs.rb
sdague-icalendar-1.0.2.4 lib/hash_attrs.rb
sdague-icalendar-1.1.0.1 lib/hash_attrs.rb
sdague-icalendar-1.1.0.2 lib/hash_attrs.rb
sdague-icalendar-1.1.0.3 lib/hash_attrs.rb
sdague-icalendar-1.1.0 lib/hash_attrs.rb
icalendar-1.5.4 lib/hash_attrs.rb
icalendar-1.5.3 lib/hash_attrs.rb
icalendar-1.5.2 lib/hash_attrs.rb
icalendar-1.5.1 lib/hash_attrs.rb
icalendar-1.5.0 lib/hash_attrs.rb
icalendar-1.4.5 lib/hash_attrs.rb
icalendar-1.4.4 lib/hash_attrs.rb
icalendar-1.4.3 lib/hash_attrs.rb