Class: SimpleStruct

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_struct.rb

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ SimpleStruct

Returns a new instance of SimpleStruct.



13
14
15
16
17
# File 'lib/simple_struct.rb', line 13

def initialize *args
  self.class.members.zip(args).each do |member, value|
    instance_variable_set(:"@#{member}", value)
  end
end

Class Method Details

.inspectObject



19
20
21
# File 'lib/simple_struct.rb', line 19

def self.inspect
  %[#{to_s}(#{members*', '})]
end

.new(*members, &block) ⇒ Object



5
6
7
8
9
10
11
# File 'lib/simple_struct.rb', line 5

def self.new *members, &block
  subclass = Class.new(self)
  subclass.define_singleton_method(:new, self.superclass.method(:new))
  subclass.define_singleton_method(:members){ members }
  subclass.class_eval(&block) if block_given?
  subclass
end

Instance Method Details

#inspectObject



23
24
25
# File 'lib/simple_struct.rb', line 23

def inspect
  %(#<#{self.class}: #{self.class.members.map{|member| "#{member}=#{send(member).inspect}"}.join(', ')}>)
end