dominictarr / Hdiff
Licence: mit
Stars: ✭ 20
Programming Languages
javascript
184084 projects - #8 most used programming language
hdiff
Human Readable JSON diff.
Diff json objects in a human readable way,
each change is wrapped in an object with an $add
and/or
$del
properties.
objects within an array require a name
or id
property (see below)
otherwise, primitives within arrays are diffed as normal.
var hdiff = require('hdiff')
var p =
hdiff(
{
foo:[
{name: 'a1', A: 1, B: 2},
{name: 'b2', A: 1, B: 2},
{name: 'c3', A: 1, B: 2},
{name: 'd4', x: ['A', 'C', 'B']},
]
}, {
foo: [
{name: 'a1', A: 1, B: 5},
{name: 'c3', A: 1, B: 2},
{name: 'd4', x: ['A', 'B', 'C']},
],
bar: {baz: true}
})
console.log(p)
outputs:
[
{
name: "a1",
A: 1, B: { $add: 5, $del: 2 }
},
{
$add: {
name: "d4",
x: [ "A", "C", "B" ]
}
},
{
$del: { name: "b2", A: 1, B: 2 }
},
{
name: "c3", A: 1, B: 2
}
]
Objects within Arrays
Objects within arrays are diffed specially. It is ambigous if an object within an array has both moved and changed, so this is necessary.
show only the changes.
to filter out the properties that havn't changed var hdiff = require('hdiff')
var p =
hdiff(
{
foo:[
{name: 'a1', A: 1, B: 2},
{name: 'b2', A: 1, B: 2},
{name: 'c3', A: 1, B: 2},
{name: 'd4', x: ['A', 'C', 'B']},
]
}, {
foo: [
{name: 'a1', A: 1, B: 5},
{name: 'c3', A: 1, B: 2},
{name: 'd4', x: ['A', 'B']},
],
bar: {baz: true}
},
//UNCHANGED = false on show differences.
{
unchanged: false
})
console.log(p)
outputs:
{foo: [
{
B: { $add: 5, $del: 2 }
},
{
x: [ {$del: "B"} ]
},
{
$del: { name: "b2", A: 1, B: 2 }
}
],
bar: {$add: {baz: true}}
}
License
MIT
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].