Module: Structure

Defined in:
lib/structure.rb,
lib/structure/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
'0.25.0'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



2
3
4
5
# File 'lib/structure.rb', line 2

def self.included(base)
  base.extend(ClassMethods)
  base.instance_variable_set(:@value_names, [])
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?



15
16
17
# File 'lib/structure.rb', line 15

def ==(other)
  values == other.values
end

#inspectObject Also known as: to_s



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/structure.rb', line 20

def inspect
  str = "#<#{self.class}"

  first = true
  values.each do |k, v|
    str << ',' unless first
    first = false
    str << " #{k}=#{v.inspect}"
  end

  str << '>'
end

#valuesObject Also known as: to_h



7
8
9
10
11
12
# File 'lib/structure.rb', line 7

def values
  vals = {}
  self.class.value_names.each { |name| vals[name] = self.send(name) }

  vals
end