summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlocalworddiff67
1 files changed, 67 insertions, 0 deletions
diff --git a/localworddiff b/localworddiff
new file mode 100755
index 0000000..a1ec03a
--- /dev/null
+++ b/localworddiff
@@ -0,0 +1,67 @@
+#!/bin/sh
+#
+# Copyright © 2013 Jonas Smedegaard <dr@jones.dk>
+# Description: Generate word-based diff for console or web
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Depends: libtext-worddiff-perl (>= 0.08)
+#
+# TODO: rewrite as Perl script, using HTML::HTML5::Builder
+
+set -e
+
+if [ -z "$3" ]; then
+ perl -MText::WordDiff -E 'say word_diff "'"$1"'", "'"$2"'", { STYLE => 'ANSIColor' }'
+ exit
+fi
+
+cat > "$3" <<EOF
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css" />
+<style>
+.fileheader {
+ display: none;
+ visibility: hidden;
+}
+.file {
+ float: left;
+ width: 49%;
+}
+.file .hunk {
+ float: right;
+ width: 90%;
+}
+.file .hunk del,
+.file .hunk ins {
+ font-weight: bold;
+}
+.file .hunk del {
+ color: darkred;
+}
+.file .hunk ins {
+ color: darkgreen;
+}
+
+</style>
+</head>
+<body>
+EOF
+perl -MText::WordDiff -E 'say word_diff "'"$1"'", "'"$2"'", { STYLE => 'HTMLTwoLines' }' >> "$3"
+cat >> "$3" <<EOF
+</body>
+</html>
+EOF