2.2.0 • Published 3 years ago

@emmetio/xml-diff v2.2.0

Weekly downloads
25
License
MIT
Repository
-
Last release
3 years ago

Diff XML documents

The goal of this module is to calculate diff between text content of two XML or HTML documents, preserving its tag structure:

import diff from '@emmetio/xml-diff';

const from = `<doc>
    <p>Lorem ipsum dolor sit amet <em>consectetur, adipisicing</em> elit.</p>
</doc>`;
const to = `<doc>
    <p>Lorem ipsum dolor sit amet aspernatur, <strong>doloribus</strong> in libero.</p>
</doc>`;

const result = diff(from, to);
console.log(result);
/*
<doc>
    <p>Lorem ipsum dolor sit amet <del>consectetur, adipisicing elit</del><ins>aspernatur, </ins><strong><ins>doloribus</ins></strong><ins> in libero</ins>.</p>
</doc>
*/

Project development is sponsored by Xcential Corporation

Features

  • High performance: uses small and fast XML scanner, written in pure JavaScript.
  • Supports multiple dialects: able to parse invalid HTML, even JSX and Angular templates.
  • Works everywhere: doesn’t use browser DOM or APIs, runs in any browser, Node.JS and WebWorkers.

Installation & usage

Install it as regular npm module:

npm install @emmetio/xml-diff

This module exposes main diff(from, to) function which accepts two text documents and returns patched to document with updates marked with <ins> and <del> tags.

How it works

  • Takes XML document and strips all markup data from it (tags, comments, CDATA etc.), leaving plain text content: <div>Hello <b>world</b>!</div>Hello world!.
  • Collapses and reduces insignificant white space characters like new lines, tabs and so on into a single space to reduce noise when comparing formatted documents.
  • Performs diff with Google’s Diff Match Patch library.
  • Applies patches to second document’s (to) plain content.
  • Restores markup and whitespace data of original document
2.2.0

3 years ago

2.1.5

3 years ago

2.1.4

4 years ago

2.1.3

4 years ago

2.1.2

4 years ago

2.1.1

4 years ago

2.1.0

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

5 years ago

2.0.0-5

5 years ago

2.0.0-4

5 years ago

2.0.0-3

5 years ago

2.0.0-2

5 years ago

2.0.0-1

5 years ago

2.0.0-0

5 years ago

1.2.7

5 years ago

1.2.6

5 years ago

1.2.5

5 years ago

1.2.4

5 years ago

1.2.3

5 years ago

1.2.2

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.3

5 years ago

1.0.2

6 years ago

1.0.1

6 years ago