From 0ff7de22a75c8cf359bf090d11ce598dddf114f1 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Th=C3=A9r=C3=A8se=20Godefroy?=
Date: Fri, 15 Aug 2014 01:20:20 +0200
Subject: [PATCH] fr/kitchen/color-wdiff: fix a few bugs, reword the
explanations.
---
fr/kitchen/color-wdiff | 200 ++++++++++++++++-------------------------
1 file changed, 75 insertions(+), 125 deletions(-)
diff --git a/fr/kitchen/color-wdiff b/fr/kitchen/color-wdiff
index 7648a26..9d84eee 100755
--- a/fr/kitchen/color-wdiff
+++ b/fr/kitchen/color-wdiff
@@ -1,132 +1,82 @@
#!/bin/bash
-# color-wdiff visualizes the differences between 2 versions of the same page.
-# This script was extracted from GNUN's GNUmakefile (function "mark-outdated")
-# and adapted. GNUN (http://www.gnu.org/software/gnun/) is under GPLv3.
-
-# Howto:
-# - The script is in [...]/enc/fr/kitchen.
-# - cd to that directory and run:
-# ./color-wdiff FILE1 FILE2
-# (FILE1 and FILE2 are the paths to the files to be compared.)
-# - The diff file is created in the directory where FILE1 resides.
+# NAME
+# color-wdiff - visualize differences between text files
+
+# SYNOPSIS
+# color-wdiff FILE0 FILE1
+
+# DEPENDENCIES
+# wdiff, reformat-html in $HOME/bin.
+
+# DESCRIPTION
+# 1. If the input files are HTML, they are reformatted, to remove
+# indentation among other things.
+# 2. The markup is inactivated by replacing angle brackets with the
+# corresponding entities.
+# 3. The files are compared with wdiff, using options which label
+# insertions and deletions. The labels are HTML tags with specific
+# classes.
+# 4. The diff is turned into a valid HTML page by adding the required
+# markup, plus CSS style for the insertion and deletion classes.
#
-# For example, compare old and new versions of index.t.html:
-# ./color-diff index.t.html index-new.t.html
-
-# Note: the diff is much easier to use if the HTML is not indented.
-# Reformatting is done by the function "page_reformat", which leaves the
-# original page intact.
-
-
-file=$1
-file1=$2
-diff_file=${file%.html}-diff.html
-
-page_reformat () {
- #reformats the original pages of emailselfdefense.fsf.org
-
- cp $1 $1.tmp
-
- # Remove javascript, which shouldn't be reformatted.
- sed -i '/jquery-1.11.0.min.js/,$d' $1.tmp
-
- # Remove leading and trailing spaces/tabs.
- sed -i 's,\t, ,g' $1.tmp
- sed -i 's,^ *,,' $1.tmp
- sed -i 's, *$,,' $1.tmp
-
- # Remove LF after .
- sed -i '/<\/a>$/ {N; s,<\/a>\n\([^<]\),<\/a>\1,}' $1.tmp
-
- # One string per paragraph, header or list item.
- for tag in li p strong a h3; do
- sed -i "/<$tag[^>]*>$/ {N; s,\\n, ,}" $1.tmp
- done
- for tag in a strong; do
- sed -i "/<\\/$tag>$/ {N; s,\\n, ,}" $1.tmp
- done
- # This command may need to be repeated. Adjust the number of repeats. This
- # could be done by looping back to a sed marker, but a while loop seems
- # quicker.
- i=0
- while (( i < 2 )); do
- sed -i '/[^<>]$/ {N; s,\([^<>]\)\n,\1 ,}' $1.tmp
- let i=i+1
- done
-
- sed -i '/ \/>$/ {N; s,\( \/>\)\n,\1 ,}' $1.tmp
- sed -i '/ ]*>$/ {N; s,\(]*>\)\n\([^<]\),\1 \2,}' $1.tmp
-
- # Make sure there is only one paragraph per string. This command may need to
- # be repeated. Adjust the number of repeats.
- i=0
- while (( i < 2 )); do
- sed -i 's,
\(.\+\)$,\n\1,' $1.tmp
- let i=i+1
- done
-
- # Single out the tags which include p (will also work for pre).
- sed -i 's,\(.\) <$tag,>\n<$tag," $1.tmp
- done
- # Remove leading and trailing spaces, double spaces and blank lines.
- sed -i 's,^ *,,' $1.tmp
- sed -i 's, *$,,' $1.tmp
- sed -i 's, , ,g' $1.tmp
- sed -i '/^$/d' $1.tmp
-
- # Fuse comment with
.
- sed -i '/<\/p>$/ {N;s,\n\(
@@ -147,10 +97,10 @@ wdiff --start-delete '' \
--end-delete '' \
--start-insert '' \
--end-insert '' \
- ${file}.tmp ${file1}.tmp >> $diff_file
+ ${f[0]} ${f[1]} >> $diff_file || true
# Add the closing tags.
-echo '