Module: Summarily::ClassMethods

Defined in:
lib/summarily/class_methods.rb

Instance Method Summary collapse

Instance Method Details

#summarily {|strategy| ... } ⇒ Object

Yields:

  • (strategy)


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/summarily/class_methods.rb', line 4

def summarily
  strategy = MergeStrategy.new
  yield strategy

  define_method :merge do |other|
    merged = {}

    strategy.merge_operations.each do |attr, operation|
      merged[attr] = operation.call(
        self.send(attr),
        other.send(attr)
      )
    end

    self.class.new(merged)
  end
end