diff --git a/README.md b/README.md
index 37fbc16..132c8a2 100644
--- a/README.md
+++ b/README.md
@@ -86,7 +86,7 @@ let dif2html = require("diff2html").Diff2Html
> Check out the `docs/diff2html.d.ts` for a complete API definition in TypeScript.
-> Check out the `docs/index.html` for a demo example.
+> Check out the `docs/demo.html` for a demo example.
## Configuration
The HTML output accepts a Javascript object with configuration. Possible options:
diff --git a/bower.json b/bower.json
index 936b553..c292ba1 100644
--- a/bower.json
+++ b/bower.json
@@ -1,7 +1,7 @@
{
"name": "diff2html",
"version": "2.0.2",
- "homepage": "http://rtfpessoa.github.io/diff2html/",
+ "homepage": "https://diff2html.xyz",
"description": "Fast Diff to colorized HTML",
"keywords": [
"git",
@@ -38,12 +38,15 @@
],
"ignore": [
"**/.*",
- "webpack.config.js",
- "package.json",
- "release.sh",
- "circle.yml",
- "css",
+ "docs",
+ "scripts",
"src",
- "test"
+ "test",
+ "typescript",
+ "circle.yml",
+ "CONTRIBUTING.md",
+ "CREDITS.md",
+ "npm-shrinkwrap.json",
+ "package.json"
]
}
diff --git a/docs/demo.html b/docs/demo.html
new file mode 100644
index 0000000..37abad5
--- /dev/null
+++ b/docs/demo.html
@@ -0,0 +1,422 @@
+
+
+
+
-
Line by Line
+
+
+
+
+
+
+
+
+
+ diff 2 html
+
+
+
Better diffs, unmatched reviews.
+
Demo
+
+
+
+
+
+
+
+
Each diff provides a comprehensive visualization of the code changes,
+ helping developpers identify problems and better understand the changes.
+
+
+
+
+
+
+
+
+
Line by Line and Side by Side changes
+
Each diff features a line by line and side by side preview of your
+ changes.
+
+
+
+
+
+
+
Code syntax highlight
+
All the code changes are syntax highlighted using highlight.js ,
+ providing more readability.
+
+
+
+
+
+
+
+
+
Line similarity matching
+
Similar lines are paired, allowing for easier change tracking.
+
+
+
+
+
+
+
+
Install with Bower
+
You can install and manage diff2html's CSS and JS using Bower:
+
+
> $ bower install diff2html
+
Copy
+
+
+
+
+
+
Install with npm
+
You can also install diff2html using npm:
+
+
> $ npm install diff2html
+
Copy
+
+
+
+
+
+
+
+
+
+
With command line integration
+
We work hard to make sure you can have your diffs in a simple and flexible
+ way. Go here full
+ documentation .
+
+
+
+
+ > $ npm install -g diff2html-cli
+ diff2html cli installed!
+
+
+ > $ diff2html
+ Previous commit changes on your browser
+
+
+ > $ is that it?
+ Yup, it's that simple.
+
+
+
+
+
+
+
+
+
+
Projects using diff2html
+
+
+
+
+
+
+
diff2html-cli
+
diff2html from your terminal to the browser.
+
+ View GitHub
+
+
+
+
+
+
+
+
Codacy
+
Check code style, security, duplication, complexity and coverage on every change.
+
+ Website
+
+
+
+
+
+
+
+
Ungit
+
The easiest way to use git. On any platform. Anywhere.
+
+ View GitHub
+
+
+
+
+
+
+
+
Diffy
+
Share your diffs and explain your ideas without committing.
+
+ Website
+
+
+
+
+
+
+
+
+
+
+
+
edgar-monitor
+
A module that processes new Edgar filings and sends out
+ notifications.
+
+ View GitHub
+
+
+
+
+
+
+
+
+
Jenkins
+
Show diffs between builds
+
+ Website
+
+
+
+
+
+
+
+
+
+
+
Open Source
+
diff2html is open source.
+ If you'd like to be part of the diff2html community or help us improve,
+ find us on GitHub and
+ Gitter . Need any help?
+
+
+ Read more in the Docs
+
+
+
+
+
+
+
+
+
+
-
-
Side by Side
+
+
+
+
+
+
+
+
+
-
-
diff --git a/docs/main.css b/docs/main.css
new file mode 100644
index 0000000..3cc887f
--- /dev/null
+++ b/docs/main.css
@@ -0,0 +1,693 @@
+/*!
+ * Copyright Colossal 2015
+ * Adapted by @rtfpessoa
+ */
+
+.m-b-md {
+ margin-bottom: 23px !important
+}
+
+.p-t {
+ padding-top: 15px !important
+}
+
+@media (min-width: 768px) {
+ p.m-b {
+ height: 75px;
+ }
+}
+
+.errors ul {
+ list-style: none;
+ margin: 0;
+ padding: 0
+}
+
+.btn {
+ display: inline-block;
+ color: #fff;
+ background: #26A65B;
+ font-weight: 400
+}
+
+.btn:hover {
+ color: #fff;
+ background: #5dbe5d;
+}
+
+.btn-clipboard {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 10;
+ display: block;
+ padding: 5px 8px;
+ font-size: 12px;
+ color: #fff;
+ background-color: #767676;
+ border-radius: 0 4px 0 4px;
+ cursor: pointer;
+}
+
+.btn-clipboard:hover {
+ color: #000;
+ background-color: #dcdfe4;
+}
+
+.footer {
+ position: relative;
+ padding: 40px 0;
+ text-align: center;
+ font-size: 14px;
+ border-top: 1px solid #dcdfe4
+}
+
+.footer p {
+ margin-bottom: 5px
+}
+
+.footer a {
+ color: #26A65B;
+}
+
+.container a {
+ color: #26A65B;
+}
+
+.container a.btn {
+ color: #fff;
+}
+
+.footer-list-item, .footer-social-buttons li {
+ display: inline-block
+}
+
+.footer-list-item:not(:last-child):after {
+ content: "\b7"
+}
+
+.footer > ul {
+ padding: 0;
+}
+
+@media (min-width: 768px) {
+ .footer {
+ padding: 60px 0
+ }
+}
+
+label, legend {
+ font-size: 12px;
+ display: block;
+ margin-bottom: 3px;
+ font-weight: 400
+}
+
+.form-wrapper input:not(.input-as-link) {
+ width: 100%;
+ box-sizing: border-box;
+ margin-bottom: 15px
+}
+
+.form-wrapper .btn {
+ margin-top: 20px
+}
+
+@media (min-width: 768px) {
+}
+
+@media (min-width: 768px) {
+ .container {
+ width: 710px
+ }
+
+ .row-centered {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ }
+}
+
+@media (min-width: 992px) {
+ .container {
+ width: 890px
+ }
+}
+
+@media (min-width: 1200px) {
+ .container {
+ width: 1050px
+ }
+}
+
+.row-padded {
+ padding-top: 80px;
+ padding-bottom: 90px
+}
+
+.row-bordered {
+ position: relative
+}
+
+.row-bordered:before {
+ content: '';
+ display: block;
+ width: 80%;
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ margin-left: -40%;
+ height: 1px;
+ background: -webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 0.2) 0, rgba(255, 255, 255, 0) 75%);
+ background: -webkit-radial-gradient(center ellipse, rgba(0, 0, 0, 0.2) 0, rgba(255, 255, 255, 0) 75%);
+ background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.2) 0, rgba(255, 255, 255, 0) 75%)
+}
+
+.row .screenshot {
+ margin-bottom: 40px
+}
+
+.container-overflow-wrap {
+ overflow: hidden
+}
+
+.hero {
+ position: relative;
+ text-align: center;
+ padding: 80px 0;
+ border-bottom: 1px solid #dcdfe4
+}
+
+.hero > .hero-header:first-child {
+ margin-top: 0
+}
+
+.hero-booticon {
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
+ margin: 0 auto 30px;
+ width: 100%;
+ font-size: 8vw;
+ display: block;
+ font-weight: 500;
+ text-align: center;
+ cursor: default;
+}
+
+.hero-homepage.hero {
+ padding-top: 0;
+ padding-bottom: 40px;
+ overflow: hidden;
+ border-bottom: 0;
+ border-bottom: 1px solid #dcdfe4;
+}
+
+.hero-homepage > .btn {
+ margin-top: 20px
+}
+
+.jumbo-list-item h3 {
+ margin-top: 0
+}
+
+.jumbo-list-item.row .screenshot {
+ margin-bottom: 0
+}
+
+@media (min-width: 992px) {
+
+ .jumbo-list-item.row .screenshot {
+ margin-bottom: -10px
+ }
+
+}
+
+hr {
+ border-width: 0;
+ border-top: 1px solid #dcdfe4;
+ margin: 20px 0 30px
+}
+
+.swag-line:before {
+ content: '';
+ position: absolute;
+ display: block;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 5px;
+ z-index: 2;
+ background-color: #26A65B;
+ background: -webkit-linear-gradient(45deg, #28a142, #26A65B);
+ background: linear-gradient(45deg, #28a142, #26A65B)
+}
+
+@media (min-width: 768px) {
+
+}
+
+.navbar {
+ background-color: #fff;
+ border: 0 #fff;
+}
+
+.navbar-header {
+ text-align: center
+}
+
+.navbar-brand {
+ height: auto;
+ padding: 19px 25px;
+ font-size: 16px;
+ display: inline-block;
+ float: none;
+ text-align: center;
+ margin: 5px 0 0
+}
+
+.navbar-nav {
+ margin-right: -15px
+}
+
+.navbar-nav > li > a {
+ font-size: 14px
+}
+
+.navbar-default .navbar-brand, .navbar-default .navbar-brand:focus, .navbar-default .navbar-brand:hover, .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav > li > a:focus, .navbar-default .navbar-nav > li > a:hover {
+ background: transparent;
+ color: #293a46;
+ font-weight: 300
+}
+
+.navbar-default .navbar-toggle {
+ position: absolute;
+ left: 0;
+ top: 7px;
+ border-color: #fff;
+ color: #293a46;
+ margin-right: 0
+}
+
+.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus {
+ background: #f9f9f9;
+ border-color: #f9f9f9
+}
+
+.navbar-minimal .navbar-header {
+ text-align: center !important;
+ float: none !important
+}
+
+.navbar-default .navbar-form a.btn {
+ margin-left: 10px
+}
+
+.navbar-fixed-bottom .navbar-nav, .navbar-fixed-bottom .navbar-header {
+ display: none
+}
+
+.navbar-fixed-bottom .navbar-nav > .open > a, .navbar-fixed-bottom .navbar-nav > .open > a:focus, .navbar-fixed-bottom .navbar-nav > .open > a:hover {
+ color: inherit;
+ background-color: inherit
+}
+
+.navbar-fixed-bottom .dropdown-menu > li > a {
+ font-weight: 300;
+ padding: 8px 24px
+}
+
+.navbar-fixed-bottom small {
+ font-size: 70%
+}
+
+.navbar-fixed-bottom .navbar-brand {
+ padding: 16px 25px
+}
+
+@media (min-width: 768px) {
+ .navbar-full .navbar-brand {
+ margin-left: -25px
+ }
+
+ .navbar-tall {
+ height: 125px
+ }
+
+ .navbar-tall .navbar-header, .navbar-tall .navbar-nav {
+ line-height: 125px;
+ text-align: left
+ }
+
+ .navbar-brand {
+ float: none;
+ display: inline-block;
+ text-align: left;
+ margin: 0
+ }
+
+ .navbar-nav > li > a {
+ display: inline-block;
+ margin-left: 13px
+ }
+
+ .navbar-nav > li:first-child > a {
+ margin-left: 0
+ }
+
+ .navbar-fixed-bottom .navbar-nav, .navbar-fixed-bottom .navbar-header {
+ display: block
+ }
+
+}
+
+.screenshot {
+ display: block;
+ overflow: hidden;
+}
+
+.screenshot > img {
+ width: 100%
+}
+
+.screenshots-fan {
+ margin-top: 50px
+}
+
+.screenshots-fan .screenshot {
+ position: relative;
+ width: auto;
+ display: inline-block;
+ text-align: center;
+}
+
+.screenshots-fan .screenshot:last-child, .screenshots-fan .screenshot:first-child {
+ z-index: 2
+}
+
+.screenshots-fan .screenshot, .screenshots-fanWithDevices .screenshot:last-child {
+ z-index: 3
+}
+
+.screenshot-crop > img {
+ position: absolute;
+ top: 0
+}
+
+@media (min-width: 768px) {
+ .screenshots-fan {
+ position: relative;
+ overflow: hidden;
+ margin-top: 60px;
+ height: 200px
+ }
+
+ .screenshots-fan .screenshot {
+ height: auto;
+ top: 10px;
+ width: 350px
+ }
+
+ .screenshots-fan .screenshot:first-child, .screenshots-fan .screenshot:last-child {
+ width: 250px;
+ position: absolute;
+ top: 65px
+ }
+
+ .screenshots-fan .screenshot:first-child {
+ left: 10px
+ }
+
+ .screenshots-fan .screenshot:last-child {
+ left: auto;
+ right: 10px
+ }
+}
+
+@media (min-width: 992px) {
+ .screenshots-fan {
+ margin-top: 60px;
+ height: 240px
+ }
+
+ .screenshots-fan .screenshot {
+ width: 400px
+ }
+
+ .screenshots-fan .screenshot:first-child, .screenshots-fan .screenshot:last-child {
+ width: 300px
+ }
+}
+
+@media (min-width: 1200px) {
+ .screenshots-fan {
+ margin-top: 80px;
+ height: 380px
+ }
+
+ .screenshots-fan .screenshot {
+ width: 550px
+ }
+
+ .screenshots-fan .screenshot:first-child, .screenshots-fan .screenshot:last-child {
+ width: 450px
+ }
+}
+
+.table {
+ width: 100%
+}
+
+.table > tbody > tr > td:last-child {
+ text-align: right
+}
+
+.table > thead > tr > th {
+ font-size: 12px;
+ font-weight: 400;
+ text-align: left
+}
+
+.table > thead > tr > th, .table > tbody > tr > td {
+ padding: 20px;
+ text-align: left;
+ border-bottom: 1px solid #dcdfe4
+}
+
+.table > thead > tr > th:first-child, .table > tbody > tr > td:first-child {
+ padding-left: 0
+}
+
+.table > thead > tr > th:last-child, .table > tbody > tr > td:last-child {
+ padding-right: 0
+}
+
+.thumbnail-mini p {
+ line-height: 1.6
+}
+
+body {
+ font-size: 16px;
+ font-family: Roboto, sans-serif;
+ font-weight: 300;
+ line-height: 1.6
+}
+
+h1 {
+ font-size: 26px;
+ font-weight: 300
+}
+
+h2 {
+ font-size: 18px;
+ font-weight: 300
+}
+
+h3 {
+ font-size: 26px;
+ font-weight: 300
+}
+
+h4 {
+ font-size: 16px;
+ font-weight: 300
+}
+
+h5 {
+ font-size: 16px;
+ font-weight: 400
+}
+
+h1, h2, h3, h4, h5 {
+ line-height: 1.4
+}
+
+h1, h2 {
+ margin: 10px 0
+}
+
+h5 {
+ margin: 6px 0
+}
+
+@media (min-width: 768px) {
+ body {
+ font-size: 16px;
+ font-family: Roboto, sans-serif;
+ font-weight: 300;
+ line-height: 1.6
+ }
+
+ h1 {
+ font-size: 38px;
+ font-weight: 300
+ }
+
+ h2 {
+ font-size: 26px;
+ font-weight: 300;
+ line-height: 1.4
+ }
+
+ h3 {
+ font-size: 26px;
+ font-weight: 300
+ }
+
+ h4 {
+ font-size: 18px;
+ font-weight: 300
+ }
+
+ h5 {
+ font-size: 16px;
+ font-weight: 400
+ }
+}
+
+body {
+ color: #293a46;
+}
+
+a {
+ text-decoration: none;
+ color: inherit;
+}
+
+a:hover, a:focus {
+ text-decoration: underline;
+}
+
+.nav li a {
+ text-decoration: none;
+ color: inherit;
+}
+
+.nav li a:hover {
+ text-decoration: underline;
+}
+
+.text-muted {
+ color: #697176
+}
+
+.popup-item p:last-child {
+ margin-bottom: 5px
+}
+
+.template-index h3 {
+ font-size: 21px;
+ margin-bottom: 12px
+}
+
+.template-index h4 {
+ color: #697176;
+ line-height: 1.6
+}
+
+.template-index h4 a, .template-index p a {
+ color: #26A65B;
+}
+
+.template-index h5 {
+ font-size: 17px;
+ margin-bottom: 8px
+}
+
+.homepage-grid h3 {
+ font-size: 22px
+}
+
+.homepage-terminal-example, .homepage-code-example {
+ position: relative;
+ font-family: monospace;
+ background: #272b38;
+ color: #48d8a0;
+ border-radius: 8px;
+ padding: 30px
+}
+
+.homepage-terminal-example .text-muted,
+.homepage-code-example .text-muted {
+ color: #6a7490
+}
+
+@media (min-width: 768px) {
+ .homepage-terminal-example {
+ padding: 50px;
+ }
+
+ .homepage-code-example {
+ padding: 10px;
+ }
+
+ .homepage-code-example > p {
+ margin: 0;
+ }
+}
+
+.homepage-xs-grid > div {
+ padding-left: 30px;
+ padding-right: 30px;
+ margin-bottom: 50px
+}
+
+.homepage-xs-grid h3 {
+ font-size: 22px
+}
+
+.hero-green {
+ color: #26A65B;
+}
+
+.hero-black {
+ color: #353535;
+}
+
+.hero-red {
+ color: #CB2C37;
+}
+
+.svg-icon-large {
+ width: 50px;
+ display: block;
+ margin: 0 auto;
+}
+
+.svg-icon-large > svg {
+ width: 100%;
+ height: auto;
+}
+
+.row-padded-small {
+ padding: 40px 0;
+}
+
+*.unselectable {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
diff --git a/docs/robots.txt b/docs/robots.txt
new file mode 100644
index 0000000..4f9540b
--- /dev/null
+++ b/docs/robots.txt
@@ -0,0 +1 @@
+User-agent: *
\ No newline at end of file
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
new file mode 100644
index 0000000..3f5fd62
--- /dev/null
+++ b/docs/sitemap.xml
@@ -0,0 +1,16 @@
+
+
+
+ https://diff2html.xyz/
+
+
+ https://diff2html.xyz/index.html
+
+
+ https://diff2html.xyz/demo.html
+
+
diff --git a/package.json b/package.json
index 29ec6a7..dcc3d5d 100644
--- a/package.json
+++ b/package.json
@@ -37,6 +37,7 @@
"preferGlobal": true,
"scripts": {
"release": "./scripts/release.sh",
+ "release-website": "node ./scripts/release-website.js",
"release-bower": "./scripts/update-bower-version.sh",
"templates": "./scripts/hulk.js --wrapper node --variable 'browserTemplates' ./src/templates/*.mustache > ./src/templates/diff2html-templates.js",
"style": "eslint src/*.js src/ui/js/*.js",
@@ -44,7 +45,7 @@
"check-coverage": "istanbul check-coverage --statements 90 --functions 90 --branches 85 --lines 90 ./coverage/coverage.json",
"test": "npm run coverage && npm run check-coverage",
"codacy": "npm run coverage && cat ./coverage/lcov.info | codacy-coverage",
- "preversion": "npm run release && npm test",
+ "preversion": "npm run release && npm run release-website && npm test",
"version": "npm run release-bower && git add -A src dist package.json bower.json",
"postversion": "git push && git push --tags"
},
diff --git a/scripts/release-website.js b/scripts/release-website.js
new file mode 100644
index 0000000..60931a4
--- /dev/null
+++ b/scripts/release-website.js
@@ -0,0 +1,28 @@
+var fs = require('fs');
+
+var hogan = require('hogan.js');
+
+var template = hogan.compile(readFile('website/templates/template.mustache'));
+
+var index = readFile('website/templates/index.partial.html');
+var indexScripts = readFile('website/templates/index-scripts.partial.html');
+
+var demo = readFile('website/templates/demo.partial.html');
+var demoAssets = readFile('website/templates/demo-assets.partial.html');
+var demoScripts = readFile('website/templates/demo-scripts.partial.html');
+
+var indexHtml = template.render({assets: '', scripts: indexScripts, content: index});
+
+writeFile('docs/index.html', indexHtml);
+
+var demoHtml = template.render({assets: demoAssets, scripts: demoScripts, content: demo});
+
+writeFile('docs/demo.html', demoHtml);
+
+function readFile(filePath) {
+ return fs.readFileSync(filePath, 'utf8');
+}
+
+function writeFile(filePath, content) {
+ return fs.writeFileSync(filePath, content);
+}
diff --git a/docs/diff2html.d.ts b/typescript/diff2html.d.ts
similarity index 100%
rename from docs/diff2html.d.ts
rename to typescript/diff2html.d.ts
diff --git a/website/templates/demo-assets.partial.html b/website/templates/demo-assets.partial.html
new file mode 100644
index 0000000..60e4d9f
--- /dev/null
+++ b/website/templates/demo-assets.partial.html
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/website/templates/demo-scripts.partial.html b/website/templates/demo-scripts.partial.html
new file mode 100644
index 0000000..234b6ff
--- /dev/null
+++ b/website/templates/demo-scripts.partial.html
@@ -0,0 +1,264 @@
+
+
+
+
+
+
+
+
+
diff --git a/website/templates/demo.partial.html b/website/templates/demo.partial.html
new file mode 100644
index 0000000..43cc93e
--- /dev/null
+++ b/website/templates/demo.partial.html
@@ -0,0 +1,9 @@
+
Line by Line
+
+
+
+
+
Side by Side
+
+
+
\ No newline at end of file
diff --git a/website/templates/index-scripts.partial.html b/website/templates/index-scripts.partial.html
new file mode 100644
index 0000000..7267503
--- /dev/null
+++ b/website/templates/index-scripts.partial.html
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/website/templates/index.partial.html b/website/templates/index.partial.html
new file mode 100644
index 0000000..ff662d0
--- /dev/null
+++ b/website/templates/index.partial.html
@@ -0,0 +1,264 @@
+
+
+ diff 2 html
+
+
+
Better diffs, unmatched reviews.
+
Demo
+
+
+
+
+
+
+
+
Each diff provides a comprehensive visualization of the code changes,
+ helping developpers identify problems and better understand the changes.
+
+
+
+
+
+
+
+
+
Line by Line and Side by Side changes
+
Each diff features a line by line and side by side preview of your
+ changes.
+
+
+
+
+
+
+
Code syntax highlight
+
All the code changes are syntax highlighted using highlight.js ,
+ providing more readability.
+
+
+
+
+
+
+
+
+
Line similarity matching
+
Similar lines are paired, allowing for easier change tracking.
+
+
+
+
+
+
+
+
Install with Bower
+
You can install and manage diff2html's CSS and JS using Bower:
+
+
> $ bower install diff2html
+
Copy
+
+
+
+
+
+
Install with npm
+
You can also install diff2html using npm:
+
+
> $ npm install diff2html
+
Copy
+
+
+
+
+
+
+
+
+
+
With command line integration
+
We work hard to make sure you can have your diffs in a simple and flexible
+ way. Go here full
+ documentation .
+
+
+
+
+ > $ npm install -g diff2html-cli
+ diff2html cli installed!
+
+
+ > $ diff2html
+ Previous commit changes on your browser
+
+
+ > $ is that it?
+ Yup, it's that simple.
+
+
+
+
+
+
+
+
+
+
Projects using diff2html
+
+
+
+
+
+
+
diff2html-cli
+
diff2html from your terminal to the browser.
+
+ View GitHub
+
+
+
+
+
+
+
+
Codacy
+
Check code style, security, duplication, complexity and coverage on every change.
+
+ Website
+
+
+
+
+
+
+
+
Ungit
+
The easiest way to use git. On any platform. Anywhere.
+
+ View GitHub
+
+
+
+
+
+
+
+
Diffy
+
Share your diffs and explain your ideas without committing.
+
+ Website
+
+
+
+
+
+
+
+
+
+
+
+
edgar-monitor
+
A module that processes new Edgar filings and sends out
+ notifications.
+
+ View GitHub
+
+
+
+
+
+
+
+
+
Jenkins
+
Show diffs between builds
+
+ Website
+
+
+
+
+
+
+
+
+
+
+
Open Source
+
diff2html is open source.
+ If you'd like to be part of the diff2html community or help us improve,
+ find us on GitHub and
+ Gitter . Need any help?
+
+
+ Read more in the Docs
+
+
+
+
+
diff --git a/website/templates/template.mustache b/website/templates/template.mustache
new file mode 100644
index 0000000..e7a1abc
--- /dev/null
+++ b/website/templates/template.mustache
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff2html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{{#assets}}
+{{{assets}}}
+
+{{/assets}}
+
+
+
+
+
+
+
+
+
+
+
+
+{{{content}}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+{{#scripts}}
+{{{scripts}}}
+
+{{/scripts}}
+
+