class DaFunk::Struct

Attributes

members[RW]
values[RW]

Public Class Methods

klass(*variables) click to toggle source
# File lib/da_funk/struct.rb, line 5
def self.klass(*variables)
  Proc.new do |*args|
    struct = DaFunk::Struct.new(*variables)
    args.each_with_index do |value, index|
      struct.send("#{variables[index]}=", value)
    end
    struct
  end
end
new(*variables) click to toggle source
# File lib/da_funk/struct.rb, line 15
def initialize(*variables)
  self.members = variables
  self.values  = variables.inject({}){|hash,v| hash[v.to_sym] = nil; hash}
end

Public Instance Methods

[](key) click to toggle source
# File lib/da_funk/struct.rb, line 24
def [](key)
  self.values[key]
end
[]=(key, value) click to toggle source
# File lib/da_funk/struct.rb, line 20
def []=(key, value)
  self.values[key] = value
end
include?(key) click to toggle source
# File lib/da_funk/struct.rb, line 39
def include?(key)
  self.members.include?(key.to_sym)
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/da_funk/struct.rb, line 28
def method_missing(method, *args, &block)
  param = method.to_s
  if self.include? method
    self[method]
  elsif (param[-1..-1] == "=" && self.include?(key = param[0..-2]))
    self[key.to_sym] = args.first
  else
    super
  end
end