diffdemo.js
author Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
Mon Dec 21 23:52:38 2009 +0000 (2 months ago)
changeset 123 bc4c90cbd778
parent 530ab6886f6540
permissions -rw-r--r--
For OS X
     1 function make_getter_setter(id, should_splitjoin) {
     2     return function (maybe_newval) {
     3         var elt = document.getElementById(id);
     4         if (maybe_newval) {
     5             elt.value = should_splitjoin ? maybe_newval.join(" ") : maybe_newval;
     6             return undefined;
     7         } else {
     8             return should_splitjoin ? elt.value.split(/ +/) : elt.value;
     9         }
    10     };
    11 }
    12 
    13 var f0 = make_getter_setter("f0", true);
    14 var f1 = make_getter_setter("f1", true);
    15 var f2 = make_getter_setter("f2", true);
    16 var f3 = make_getter_setter("f3", false);
    17 
    18 function demo_lcs() {
    19     f3(uneval(Diff.longest_common_subsequence(f1(), f2())));
    20 }
    21 
    22 function demo_comm() {
    23     f3(uneval(Diff.diff_comm(f1(), f2())));
    24 }
    25 
    26 function demo_diff_patch() {
    27     f3(uneval(Diff.diff_patch(f1(), f2())));
    28 }
    29 
    30 function demo_invert() {
    31     p = eval(f3());
    32     Diff.invert_patch(p);
    33     f3(uneval(p));
    34 }
    35 
    36 function demo_apply_patch() {
    37     f2(Diff.patch(f1(), eval(f3())));
    38 }
    39 
    40 function demo_diff1() {
    41     f3(uneval(Diff.diff_patch(f0(), f1())));
    42 }
    43 
    44 function demo_diff2() {
    45     f3(uneval(Diff.diff_patch(f0(), f2())));
    46 }
    47 
    48 function demo_diff3(excludeFalseConflicts) {
    49     f3(uneval(Diff.diff3_merge(f1(), f0(), f2(), excludeFalseConflicts)));
    50 }
    51 
    52 function demo_diff3_cooked(excludeFalseConflicts) {
    53     var merger = Diff.diff3_merge(f1(), f0(), f2(), excludeFalseConflicts);
    54     var lines = [];
    55     for (var i = 0; i < merger.length; i++) {
    56         var item = merger[i];
    57         if (item.ok) {
    58             lines = lines.concat(item.ok);
    59         } else {
    60             lines = lines.concat(["\n<<<<<<<<<\n"], item.conflict.a,
    61                                  ["\n=========\n"], item.conflict.b,
    62                                  ["\n>>>>>>>>>\n"]);
    63         }
    64     }
    65     f3(lines.join(" "));
    66 }
    67 
    68 function demo_diff3_dig_in() {
    69     var merger = Diff.diff3_merge(f1(), f0(), f2(), false);
    70     var lines = [];
    71     for (var i = 0; i < merger.length; i++) {
    72         var item = merger[i];
    73         if (item.ok) {
    74             lines = lines.concat(item.ok);
    75         } else {
    76             var c = Diff.diff_comm(item.conflict.a, item.conflict.b);
    77             for (var j = 0; j < c.length; j++) {
    78                 var inner = c[j];
    79                 if (inner.common) {
    80                     lines = lines.concat(inner.common);
    81                 } else {
    82                     lines = lines.concat(["\n<<<<<<<<<\n"], inner.file1,
    83                                          ["\n=========\n"], inner.file2,
    84                                          ["\n>>>>>>>>>\n"]);
    85                 }
    86             }
    87         }
    88     }
    89     f3(lines.join(" "));
    90 }