Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/emmetio/xml-diff
Diff and patch contents of XML documents
https://github.com/emmetio/xml-diff
diff patch xml
Last synced: 3 months ago
JSON representation
Diff and patch contents of XML documents
- Host: GitHub
- URL: https://github.com/emmetio/xml-diff
- Owner: emmetio
- License: mit
- Created: 2019-12-07T18:22:29.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-07-19T21:24:43.000Z (over 1 year ago)
- Last Synced: 2024-10-29T22:37:59.233Z (4 months ago)
- Topics: diff, patch, xml
- Language: TypeScript
- Homepage:
- Size: 211 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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:
```js
import diff from '@emmetio/xml-diff';const from = `
Lorem ipsum dolor sit amet consectetur, adipisicing elit.
`;
const to = `
Lorem ipsum dolor sit amet aspernatur, doloribus in libero.
`;const result = diff(from, to);
console.log(result);
/*
Lorem ipsum dolor sit amet
consectetur, adipisicing elitaspernatur, doloribus in libero.*/
```---
> Project development is sponsored by [Xcential Corporation](https://xcential.com)
---## Features
* **High performance**: uses [small and fast XML scanner](https://github.com/emmetio/html-matcher), 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 `` and `
` tags.## How it works
* Takes XML document and strips all markup data from it (tags, comments, CDATA etc.), leaving plain text content: `
Hello world!` → `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](https://github.com/google/diff-match-patch) library.
* Applies patches to second document’s (`to`) plain content.
* Restores markup and whitespace data of original document