Sha256: c4496645dfd1979b447be78e59d2f0dc207640e1fb35d82856afd5305d7014bd

Contents?: true

Size: 426 Bytes

Versions: 4

Compression:

Stored size: 426 Bytes

Contents

module ValueStruct::DupWithChanges
  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
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
value_struct-0.8.1 lib/value_struct/dup_with_changes.rb
value_struct-0.8.0 lib/value_struct/dup_with_changes.rb
value_struct-0.7.0 lib/value_struct/dup_with_changes.rb
value_struct-0.6.0 lib/value_struct/dup_with_changes.rb