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 {}
    new(values)
  when Hash
    new(
      members.zip(values).map{ |member, value|
        if changes.has_key?(m)
          changes[m]
        else
          value
        end
      }
    )
  else
    raise ArgumentError, 'dup must be given a Hash or nothing'
  end
end