Skip to content

Instantly share code, notes, and snippets.

View dmahapatro's full-sized avatar

Dhiraj Mahapatro dmahapatro

View GitHub Profile
@dmahapatro
dmahapatro / DeepMergeMap.groovy
Last active January 7, 2016 13:37
Deep Merge Groovy Map
Map.metaClass.merge = { Map rhs ->
def lhs = delegate // or delegate.clone() to make delegate immutable
rhs.each { k, v -> lhs[k] = lhs[k] in Map ? lhs[k].merge(v) : (lhs[k] != null ? lhs[k] && v : v) }
lhs
}
def a = [ foo: [ foo: true, bar: true ] ]
def b = [ foo: [ bar: false, baz: true ] ]
assert a.merge(b) == [ foo: [ foo: true, bar: false, baz: true ] ]