diff2html/README.md

220 lines
7.3 KiB
Markdown
Raw Normal View History

2015-12-24 11:27:07 +00:00
# diff2html
2014-08-30 02:54:52 +00:00
2015-12-23 20:19:10 +00:00
[![Codacy Code Badge](https://api.codacy.com/project/badge/grade/06412dc3f5a14f568778d0db8a1f7dc8)](https://www.codacy.com/app/Codacy/diff2html)
[![Codacy Coverage Badge](https://api.codacy.com/project/badge/coverage/06412dc3f5a14f568778d0db8a1f7dc8)](https://www.codacy.com/app/Codacy/diff2html)
[![Circle CI](https://circleci.com/gh/rtfpessoa/diff2html.svg?style=svg)](https://circleci.com/gh/rtfpessoa/diff2html)
[![Dependency Status](https://dependencyci.com/github/rtfpessoa/diff2html/badge)](https://dependencyci.com/github/rtfpessoa/diff2html)
2015-12-24 11:27:07 +00:00
[![npm](https://img.shields.io/npm/v/diff2html.svg)](https://www.npmjs.com/package/diff2html)
[![Dependency Status](https://david-dm.org/rtfpessoa/diff2html.svg)](https://david-dm.org/rtfpessoa/diff2html)
[![devDependency Status](https://david-dm.org/rtfpessoa/diff2html/dev-status.svg)](https://david-dm.org/rtfpessoa/diff2html#info=devDependencies)
2015-12-24 11:27:07 +00:00
[![node](https://img.shields.io/node/v/diff2html.svg)]()
[![npm](https://img.shields.io/npm/l/diff2html.svg)]()
[![npm](https://img.shields.io/npm/dm/diff2html.svg)](https://www.npmjs.com/package/diff2html)
[![Gitter](https://badges.gitter.im/rtfpessoa/diff2html.svg)](https://gitter.im/rtfpessoa/diff2html?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
2016-05-06 22:19:12 +00:00
diff2html generates pretty HTML diffs from git or unified diff output.
2015-12-24 11:27:07 +00:00
[![NPM](https://nodei.co/npm/diff2html.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/diff2html/)
2014-08-30 02:54:52 +00:00
## Features
2016-05-06 22:19:12 +00:00
* Supports git and unified diffs
2016-05-01 19:52:25 +00:00
* Line by line and Side by side diff
2014-08-30 02:54:52 +00:00
2016-05-01 19:52:25 +00:00
* New and old line numbers
2014-08-30 02:54:52 +00:00
2016-05-01 19:52:25 +00:00
* Inserted and removed lines
2014-08-30 22:33:12 +00:00
2014-08-30 02:54:52 +00:00
* GitHub like style
2015-07-19 21:34:46 +00:00
* Code syntax highlight
* Line similarity matching
2016-05-01 19:52:25 +00:00
* Easy code selection
2014-09-14 19:50:17 +00:00
## Online Example
2014-08-30 02:54:52 +00:00
2016-07-23 09:20:29 +00:00
> Go to [diff2html](https://diff2html.xyz/)
2014-08-30 22:33:12 +00:00
2014-09-08 17:15:51 +00:00
## Distributions
* [WebJar](http://www.webjars.org/)
* [Node Module](https://www.npmjs.org/package/diff2html)
2015-07-18 23:23:36 +00:00
* [Bower Package](http://bower.io/search/?q=diff2html)
* [Node CLI](https://www.npmjs.org/package/diff2html-cli)
2015-07-18 23:23:36 +00:00
* Manually download and import `dist/diff2html.min.js` into your page
2014-09-08 17:15:51 +00:00
## How to use
### Browser Library
Import the stylesheet and the library code
```html
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="dist/diff2html.css">
<!-- Javascripts -->
<script type="text/javascript" src="dist/diff2html.js"></script>
```
It will now be available as a global variable named `Diff2Html`.
### Node Module
```js
2017-06-20 10:47:52 +00:00
let diff2html = require("diff2html").Diff2Html
```
## API
> Intermediate Json From Git Word Diff Output
2014-08-30 22:33:12 +00:00
getJsonFromDiff(input: string, configuration?: Options): Result[]
2014-08-30 02:54:52 +00:00
> Pretty HTML diff
2014-08-30 22:33:12 +00:00
getPrettyHtml(input: any, configuration?: Options): string
2017-05-07 09:38:17 +00:00
> Check out the `typescript/diff2html.d.ts` for a complete API definition in TypeScript.
2014-08-30 22:33:12 +00:00
2016-08-23 17:20:54 +00:00
> Check out the `docs/demo.html` for a demo example.
2014-09-14 19:50:17 +00:00
## Configuration
The HTML output accepts a Javascript object with configuration. Possible options:
2014-09-14 19:50:17 +00:00
- `inputFormat`: the format of the input data: `'diff'` or `'json'`, default is `'diff'`
- `outputFormat`: the format of the output data: `'line-by-line'` or `'side-by-side'`, default is `'line-by-line'`
- `showFiles`: show a file list before the diff: `true` or `false`, default is `false`
2015-12-09 22:17:26 +00:00
- `matching`: matching level: `'lines'` for matching lines, `'words'` for matching lines and words or `'none'`, default is `none`
- `matchWordsThreshold`: similarity threshold for word matching, default is 0.25
2016-04-14 11:01:25 +00:00
- `matchingMaxComparisons`: perform at most this much comparisons for line matching a block of changes, default is `2500`
2016-10-15 12:21:22 +00:00
- `templates`: object with previously compiled templates to replace parts of the html
- `rawTemplates`: object with raw not compiled templates to replace parts of the html
> For more information regarding the possible templates look into [src/templates](https://github.com/rtfpessoa/diff2html/tree/master/src/templates)
2014-08-30 02:54:52 +00:00
2017-07-21 22:07:44 +00:00
** Diff2HtmlUI Helper Options **
- `synchronisedScroll`: scroll both panes in side-by-side mode: `true` or `false`, default is `false`
> For more information regarding the possible templates look into [src/templates](https://github.com/rtfpessoa/diff2html/tree/master/src/templates)
## Diff2HtmlUI Helper
> Simple wrapper to ease simple tasks in the browser such as: code highlight and js effects
* Invoke Diff2html
* Inject output in DOM element
* Enable collapsible file summary list
* Enable syntax highlight of the code in the diffs
### How to use
#### Mandatory HTML resource imports
```html
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="dist/diff2html.css">
<!-- Javascripts -->
<script type="text/javascript" src="dist/diff2html.js"></script>
<script type="text/javascript" src="dist/diff2html-ui.js"></script>
```
#### Init
```js
var diff2htmlUi = new Diff2HtmlUI({diff: diffString});
// or
var diff2htmlUi = new Diff2HtmlUI({json: diffJson});
```
#### Draw
```js
diff2htmlUi.draw('html-target-elem', {inputFormat: 'json', showFiles: true, matching: 'lines'});
```
#### Syntax Highlight
> Add the dependencies.
Choose one color scheme, and add the main highlight code. Note that the stylesheet for the color scheme must come **before** the main diff2html stylesheet.
If your favourite language is not included in the default package also add its javascript highlight file.
```html
<!-- Stylesheet -->
2017-10-05 16:28:33 +00:00
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css">
<link rel="stylesheet" type="text/css" href="dist/diff2html.css">
<!-- Javascripts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.js"></script>
2017-10-05 16:28:33 +00:00
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/scala.min.js"></script>
<script type="text/javascript" src="dist/diff2html-ui.js"></script>
```
> Invoke the Diff2HtmlUI helper
```js
$(document).ready(function() {
var diff2htmlUi = new Diff2HtmlUI({diff: lineDiffExample});
diff2htmlUi.draw('#line-by-line', {inputFormat: 'json', showFiles: true, matching: 'lines'});
diff2htmlUi.highlightCode('#line-by-line');
});
```
#### Collapsable File Summary List
> Add the dependencies.
```html
<!-- Javascripts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.js"></script>
<script type="text/javascript" src="dist/diff2html-ui.js"></script>
```
> Invoke the Diff2HtmlUI helper
```js
$(document).ready(function() {
var diff2htmlUi = new Diff2HtmlUI({diff: lineDiffExample});
diff2htmlUi.draw('#line-by-line', {inputFormat: 'json', showFiles: true, matching: 'lines'});
diff2htmlUi.fileListCloseable('#line-by-line', false);
});
```
# Troubleshooting
### 1. Out of memory or Slow execution
#### Causes:
* Big files
* Big lines
#### Fix:
* Disable the line matching algorithm, by setting the option `{"matching": "none"}` when invoking diff2html
2014-08-30 22:33:12 +00:00
## Contributions
2014-08-30 02:54:52 +00:00
2015-12-23 20:19:10 +00:00
This is a developer friendly project, all the contributions are welcome.
To contribute just send a pull request with your changes following the guidelines described in `CONTRIBUTING.md`.
I will try to review them as soon as possible.
2014-08-30 02:54:52 +00:00
## License
Copyright 2014-2016 Rodrigo Fernandes. Released under the terms of the MIT license.
2014-08-30 02:54:52 +00:00
2014-08-30 22:33:12 +00:00
## Thanks
This project is inspired in [pretty-diff](https://github.com/scottgonzalez/pretty-diff) by [Scott González](https://github.com/scottgonzalez).
2014-08-30 02:54:52 +00:00
---