From: Thérèse Godefroy
Date: Sun, 27 Jul 2014 21:07:29 +0000 (+0200)
Subject: fr: script to visualize differences between 2 pages.
X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=f275dd4fbac31f86e4efa7cb3bb2e904b89da008;p=enc-live.git
fr: script to visualize differences between 2 pages.
---
diff --git a/fr/kitchen/color-wdiff b/fr/kitchen/color-wdiff
new file mode 100755
index 0000000..7648a26
--- /dev/null
+++ b/fr/kitchen/color-wdiff
@@ -0,0 +1,156 @@
+#!/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.
+#
+# 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\(
+
+
+
+${diff_file##*\/}
+
+
+EOF
+
+# Run wdiff with options to add the proper markup at the beginning and end of
+# deletions and insertions.
+wdiff --start-delete '' \
+ --end-delete '' \
+ --start-insert '' \
+ --end-insert '' \
+ ${file}.tmp ${file1}.tmp >> $diff_file
+
+# Add the closing tags.
+echo '
' >> $diff_file
+
+# Clean up.
+rm -f ${file}.tmp ${file1}.tmp ${file}.r ${file1}.r