Skip to content

togoog/auto-change-description

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

auto-change-description Build Status

This simple library compares two JSONs and lists the differences found as changes.

The library checks for created, deleted or modified plain attributes. This is done using deep-diff.

Array attributes are treated as plain attributes and compared using deep-equal. If arrays contain any objects or other arrays, those are not separately considered.

Objects are finally treated recursively.

Install

With npm do:

npm i --save auto-change-description

Use

const acd = require('auto-change-description');
var results = acd.describe(before, after);

Example

Comparing these two JSONs:

    var before = {
        name: 'my object',
        puppy: 'yo',
        description: 'it\'s an object!',
        details: {
            it: 'has',
            an: 'array',
            with: ['a', 'few', 'elements']
        }
    };
    
    var after = {
        name: 'updated object',
        yo: 'puppy',
        description: 'it\'s an object!',
        details: {
            it: 'has',
            an: 'array',
            with: ['a', 'few', 'more', 'elements', {than: 'before'}]
        }
    };

Produces this output:

[
    'Deleted {puppy} with value (yo).',
    'Created {yo} with value (puppy).',
    'Modified {name} from (my object) to (updated object).',
    'Modified {details.with} from (["a","few","elements"]) to (["a","few","more","elements",{"than":"before"}]).'
]

The output was left as an array to allow free joining as people see fit, either with '\n' or '<br>' or whatever else.

The same logic was applied to {} and () wraps, to allow easy replacement with, for example, <strong></strong>, <em></em> or any other formatting syntaxes.

About

JSON Auto Change Description

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%