Module: ValueStruct::DupWithChanges

Defined in:
lib/value_struct/dup_with_changes.rb

Instance Method Summary collapse

Instance Method Details

#dup(changes = {}) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/value_struct/dup_with_changes.rb', line 2

def dup(changes = {})
  case changes
  when {}
    self.class.new(*values)
  when Hash
    self.class.new(
      *members.zip(values).map{ |member, value|
        if changes.has_key?(member)
          changes[member]
        else
          value
        end
      }
    )
  else
    raise ArgumentError, 'dup must be given a Hash or nothing'
  end
end