npm-couple
Version:
A library to couple two objects.
42 lines (33 loc) • 840 B
text/coffeescript
define = this.define || require('amdefine')(module)
define([
'./typedCouple'
'./type'
], (typedCouple, type) ->
merge = typedCouple()
merge.object =
merge.array =
merge.reference = (a, b) ->
if type(a) is type(b)
obj = {}
bKeys = Object.keys(b)
bKeys.forEach((key) ->
obj[key] = b[key]
)
aKeys = Object.keys(a)
aKeys.forEach((key) ->
obj[key] = merge(a[key])(b[key])
)
obj
else a
merge.number =
merge.string =
merge.boolean =
merge.primitive = (a, b) -> a
merge.undefined = (a, b) -> b
merge.function = (a, b) -> a(b)
merge.regexp = (a, b) -> a.test(b)
merge
)