# absol-diff

> Code compare

Latest version **0.1.1** (published 2019-06-20) · ISC license · 0 weekly downloads

## Install

```sh
npm install absol-diff
pnpm add absol-diff
yarn add absol-diff
bun add absol-diff
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.1 |
| Published | 2019-06-20 |
| First published | 2019-06-13 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 19.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Pham Quoc Du Thien |
| Maintainers | duthienkt |
| Keywords | diff, code, compare, lcs |

## Links

- npm: https://www.npmjs.com/package/absol-diff
- Repository: https://github.com/duthienkt/absol-diff
- Issues: https://github.com/duthienkt/absol-diff/issues
- npm.io page: https://npm.io/package/absol-diff

## Alternatives

- [flatbuffers](https://npm.io/package/flatbuffers.md) — 6.0M weekly downloads
- [jwt-simple](https://npm.io/package/jwt-simple.md) — 259.5K weekly downloads
- [@exodus/patch-broken-hermes-typed-arrays](https://npm.io/package/@exodus/patch-broken-hermes-typed-arrays.md) — 28.5K weekly downloads
- [@native-to-anchor/buffer-layout](https://npm.io/package/@native-to-anchor/buffer-layout.md) — 12.2K weekly downloads
- [binary-parser-encoder](https://npm.io/package/binary-parser-encoder.md) — 5.3K weekly downloads

## Recent versions

- 0.1.1 (latest) — 2019-06-20
- 0.1.0 — 2019-06-20
- 0.0.1 — 2019-06-13

## README

# Absol-Diff

> Code compare

## Compare 2 string(word - word)

```js
import * as Diff from 'absol-diff';
var a = "absol-diff is a sub-project of absol project";
var b = "absol-diff is a sub-project of absol.js(tiny html5 framework)";
var result = Diff.diffSingleText(a, b);
var resultShoultBe = [ 
{ 
    "left":{ 
        "start":0,
        "end":36
    },
    "right":{ 
        "start":0,
        "end":36
    },
    "color":1//same
},
{ 
    "left":{ 
        "start":36,
        "end":36
    },
    "right":{ 
        "start":36,
        "end":44
    },
    "color":-1//diff
},
...
]

```

## Compare 2 code(line - line) 

```js
import * as Diff from 'absol-diff';
var a = `//QHD
for (var i = 0; i < lTokens.length; ++i) {
    for (var j = 0; j < rTokens.length; ++j) {
        Q[i + 1][j + 1] = Math.max(Q[i][j + 1], Q[i + 1][j]);
        if (lTokens[i].value == rTokens[j].value) {
            // different line 0
            Q[i + 1][j + 1] = Math.max(Q[i + 1][j + 1], Q[i][j] + rTokens[j].score);
        }
    }
}`;
var b = `//QHD - Dynamic Programming
for (var i = 0; i < lTokens.length; ++i) {
    for (var j = 0; j < rTokens.length; ++j) {
        //insert line
        Q[i + 1][j + 1] = Math.max(Q[i][j + 1], Q[i + 1][j]);
        if (lTokens[i].value == rTokens[j].value) {
        // different line 1
            Q[i + 1][j + 1] = Math.max(Q[i + 1][j + 1], Q[i][j] + rTokens[j].score);
        }
    }
}`;
var result = Diff.diffByLineText(a, b);
var resultShoultBe = { 
   "lLines":[ 
      "//QHD",
      "for (var i = 0; i < lTokens.length; ++i) {",
      ...
   ],
   "rLines":[ 
      "//QHD - Dynamic Programming",
      "for (var i = 0; i < lTokens.length; ++i) {",
     ...
   ],
   "trapeziumes":[ 
      { 
         "left":{ 
            "start":0,
            "end":1
         },
         "right":{ 
            "start":0,
            "end":1
         },
         "color":-1
      },
      { 
         "left":{ 
            "start":1,
            "end":3
         },
         "right":{ 
            "start":1,
            "end":3
         },
         "color":1
      },
     ...
   ]
}
```

## Work with web-worker

`diffworker.js`
```js
import IFrameBridge from 'absol/src/Network/IFrameBridge';

import * as Diff from 'absol-diff';

var brigde = IFrameBridge.getInstance();
brigde.diffByLine = function (leftData, rightData) {
    return Diff.diffByLineText(leftData, rightData);
}


brigde.diffByWord = function (leftData, rightData) {
    return Diff.diffSingleText(leftData, rightData);
}
```

`main.js`
```js
import IFrameBridge from 'absol/src/Network/IFrameBridge';
var diffWorker = new IFrameBridge(new Worker('./dist/diffworker.js'));
var leftData = self.editorLeft.getValue();
var rightData = self.editorRight.getValue();
diffWorker.invoke('diffByLine', leftData, rightData).then(function(result){
    //process result data
});
```

---
_Source: https://npm.io/package/absol-diff · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
