Skip to content

computationalabstraction/Saman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Saman(समान) is a deep object diffing and equality checker for Javascript. The library is concise consisting of only 6 functions and the distribution size is 659 bytes(Gzipped).

Example Code

const { equal, diff2 } = require("saman"); let obj1 = { i:10, j:-3, y:[-1,-3] }; let obj2 = { r:76, e:23, i:4, y:[1,2,-7] }; let obj3 = { m: "hello", n:"bye" }; console.log(equal(obj3,obj3)); // -> True console.log(diff2(obj1,obj2)); // -> /* {  created: { r: 76, e: 23, y: { '2': -7 } },  updated: { i: 4, y: { '0': 1, '1': 2 } },  deleted: { j: -3 } }  */

Installation

Node

npm i saman 

Browser

<script src="https://unpkg.com/saman"></script> 

Documentation

Underconstruction!

saman.equal(obj1: Object, obj2: Object) -> Boolean

This function recursively checks every property of both the objects for equality and returns a boolean.

const { equal } = require("saman"); const obj1 = { x:10, y:20 }; const obj2 = { x:-1, y:2 }; console.log(equal(obj1,obj2)) // -> false console.log(equal(obj1,obj1)) // -> true console.log(equal(obj2,obj2)) // -> true

saman.cDiff(obj1: Object, obj2: Object) -> Object

This function recursively checks and reports every new property created in obj2 w.r.t.obj1 and returns an object which contains all the newly created props.

const { cDiff } = require("saman"); const obj1 = { x:10, y:20 }; const obj2 = { x:-1, y:2, z:30 }; console.log(cDiff(obj1,obj2)) // -> { z:30 }

saman.uDiff(obj1: Object, obj2: Object) -> Object

This function recursively checks and reports every updated property in obj2 w.r.t.obj1 and returns an object which contains all the updated props.

const { uDiff } = require("saman"); const obj1 = { x:10, y:20 }; const obj2 = { x:10, y:-7, z:30 }; console.log(uDiff(obj1,obj2)) // -> { y:-7 }

saman.dDiff(obj1: Object, obj2: Object) -> Object

This function recursively checks and reports every deleted property in obj2 w.r.t.obj1 and returns an object which contains all the deleted props.

const { dDiff } = require("saman"); const obj1 = { x:10, y:20 }; const obj2 = { y:-7 }; console.log(dDiff(obj1,obj2)) // -> { x:10 } console.log(dDiff(obj1,obj1)) // -> {}

saman.diff(obj1: Object, obj2: Object) -> Object

This function recursively checks and reports every created, updated and deleted properties in obj2 w.r.t.obj1 and returns an object which contains all the created, updated and deleted props.

const { diff } = require("saman"); const obj1 = { x:10, y:20, z:30 }; const obj2 = { x:2, y:-7 }; console.log(diff(obj1,obj2)) // -> { x:2, y:-7, z:30 }

saman.diff2(obj1: Object, obj2: Object) -> Object

This function is similar to saman.diff but instead of returning created, updated and deleted props all-together merged in one object without delineation, saman.diff2 returns an object with 3 props: created, updated and deleted which contain those props respectively.

const { diff2 } = require("saman"); const obj1 = { x:10, y:20, z:30 }; const obj2 = { x:2, y:-7 }; console.log(diff2(obj1,obj2)) // -> { created:{}, updated: {x:2, y:-7}, deleted: {z:30} }

About

Deep Object Diff and Equality checker for Javascript (beta)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •