diff --git a/README.md b/README.md index 7476e25..7309449 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Diff to Html generates pretty HTML diffs from git word diff output. ## Features -* line-by-line diff (not side-by-side) +* line-by-line` diff * char-by-char highlight @@ -14,11 +14,21 @@ Diff to Html generates pretty HTML diffs from git word diff output. * GitHub like style -## Setup +## Real Example -Import the diff2html.js in your html. +> Go to [Diff2HTML](http://rtfpessoa.github.io/diff2html/) -> Pretty Html From Git Word Diff Output +## Distributions + +* [WebJar](http://www.webjars.org/) + +* [Node Module](https://www.npmjs.org/package/diff2html) + +* Manually download and import `diff2html.js` into your page + +## How to use + +> Pretty Line-by-Line Html From Git Word Diff Output Diff2Html.getPrettyHtmlFromDiff(exInput); @@ -26,11 +36,11 @@ Import the diff2html.js in your html. Diff2Html.getJsonFromDiff(exInput); -> Pretty Html From Json +> Pretty Line-by-Line Html From Json Diff2Html.getPrettyHtmlFromJson(exInput); -> Check out the `template.html` for a complete example. +> Check out the `index.html` for a complete example. ## Contributions diff --git a/diff2html.css b/diff2html.css index f6a1c1d..3e4a136 100644 --- a/diff2html.css +++ b/diff2html.css @@ -7,11 +7,11 @@ * */ -#d2h-wrapper { +.d2h-wrapper { display: block; margin: 0 auto; text-align: left; - width: 900px; + width: 100%; } .d2h-file-wrapper { @@ -28,14 +28,13 @@ } .d2h-file-stats { - display: inline-block; + display: inline; font-size: 12px; text-align: center; - width: 70px; + max-width: 15%; } .d2h-lines-added { - display: inline-block; background-color: #ceffce; border: 1px solid #b4e2b4; color: #399839; @@ -45,7 +44,6 @@ } .d2h-lines-deleted { - display: inline-block; background-color: #f7c8c8; border: 1px solid #e9aeae; color: #c33; @@ -55,14 +53,13 @@ } .d2h-file-name { - display: inline-block; + display: inline; height: 33px; line-height: 33px; - width: 750px; -} - -.d2h-file-diff > div { - width: 100%; + max-width: 80%; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; } .d2h-diff-table { @@ -71,6 +68,11 @@ font-size: 12px; height: 18px; line-height: 18px; + width: 100%; +} + +.d2h-file-diff { + overflow-x: scroll; } .d2h-code-line { @@ -79,9 +81,7 @@ padding-right: 10px; height: 18px; line-height: 18px; - - width: 776px; - overflow: hidden; + margin-left: 80px; } .d2h-code-line del { @@ -102,13 +102,27 @@ border-radius: 0.2em; } +.line-num1 { + display: inline-block; + float: left; + width: 30px; +} + +.line-num2 { + display: inline-block; + float: right; + width: 30px; +} + .d2h-code-linenumber { - width: 1%; - min-width: 30px; + position: absolute; + width: 2%; + min-width: 65px; padding-left: 10px; padding-right: 10px; height: 18px; line-height: 18px; + background-color: #fff; color: rgba(0, 0, 0, 0.3); text-align: right; border: solid #eeeeee; @@ -116,6 +130,10 @@ cursor: pointer; } +.d2h-code-linenumber:not(:first-child) { + border-width: 0 1px 0 1px; +} + .d2h-del { background-color: #f7c8c8; border-color: #e9aeae; diff --git a/diff2html.js b/diff2html.js index 385f7a1..941b8ee 100644 --- a/diff2html.js +++ b/diff2html.js @@ -35,7 +35,7 @@ */ Diff2Html.prototype.getPrettyHtmlFromDiff = function (diffInput) { var diffJson = generateDiffJson(diffInput); - return generateJsonHtml(diffJson); + return generateJsonHtml(diffJson, generateFileHtml); }; /* @@ -49,7 +49,7 @@ * Generates pretty html from a json object */ Diff2Html.prototype.getPrettyHtmlFromJson = function (diffJson) { - return generateJsonHtml(diffJson); + return generateJsonHtml(diffJson, generateFileHtml); }; var generateDiffJson = function (diffInput) { @@ -94,13 +94,20 @@ var startBlock = function (line) { saveBlock(); - var values = /^(@@ -(\d+),(\d+) \+(\d+),(\d+) @@).*/.exec(line); + var values; + if (values = /^(@@ -(\d+),(\d+) \+(\d+),(\d+) @@).*/.exec(line)) { + oldLine = values[2]; + newLine = values[4]; + } else { + oldLine = 0; + newLine = 0; + } /* create block metadata */ currentBlock = {}; currentBlock.lines = []; - currentBlock.oldStartLine = oldLine = values[2]; - currentBlock.newStartLine = newLine = values[4]; + currentBlock.oldStartLine = oldLine; + currentBlock.newStartLine = newLine; currentBlock.header = line; }; @@ -206,8 +213,8 @@ * Line By Line HTML */ - var generateJsonHtml = function (diffFiles) { - return "