id-diff
Diff arrays of identifyable objects.
The output can be used to do 3-way merges with id-merge.
var origin =id: 1 value: 1id: 2 value: 2id: 3 value: 3id: 4 value: 4var modified =id: 5 value: 6id: 3 value: 8id: 2 value: 2id: 4 value: 4id: 1 value: 5var result =// returns:values:1: 'm' 1 52: '=' 23: 'm' 3 84: '=' 45: '+' 6ids: "x"1"x"2"+"5"="3"p"2"="4"p"1
result.ids uses array-diff's format.
result.values returns all values both of the original and the changed version including change markers 'm' (modified), '=', '+' and '-'.
An example including deletes:
var origin =id: 1 value: 1id: 2 value: 2id: 3 value: 3id: 4 value: 4var modified =id: 2 value: 2id: 1 value: 9id: 4 value: 5var result =// returns:values:1: 'm' 1 92: '=' 23: '-' 34: 'm' 4 5ids: "x"1"="2"-"3"p"1"="4