diffline: function()

in public/js/util.js [515:563]


    diffline: function(line1, line2) {
        var ret1 = [];
        var ret2 = [];
        var s = 0;
        var m = line1.length - 1;
        var n = line2.length - 1;
        while (s <= m && s <= n && (line1.charAt(s) == line2.charAt(s))) {
            s++;
        }

        while (s <= m && s <= n && (line1.charAt(m) == line2.charAt(n))) {
            m--;
            n--;
        }

        // deleted
        if (s <= m) {
            ret1.push({t:0, str: line1.substring(0, s)});
            //StringBuilder sb = new StringBuilder();
            //sb.append(Util.htmlize(line1.substring(0, s)));
            ret1.push({t:1, str: line1.substring(s, m + 1)});
            ret1.push({t:0, str: line1.substring(m+1, line1.length)}); 
            //sb.append(Util.htmlize(line1.substring(m + 1, line1.length())));
            //ret1.push({t:0, str: line1.substring(0, s)}) 
            //    = sb.toString();
        } else {
            ret1.push({t:0, str: line1});
            //ret[0] = Util.htmlize(line1.toString()); // no change
        }

        // added
        if (s <= n) {
            ret2.push({t:0,str:line2.substring(0, s)});
            ret2.push({t:1,str:line2.substring(s, n + 1)});
            ret2.push({t:0,str:line2.substring(n + 1, line2.length)});
            //StringBuilder sb = new StringBuilder();
            //sb.append(Util.htmlize(line2.substring(0, s)));
            //sb.append(HtmlConsts.SPAN_A);
            //sb.append(Util.htmlize(line2.substring(s, n + 1)));
            //sb.append(HtmlConsts.ZSPAN);
            //sb.append(Util.htmlize(line2.substring(n + 1, line2.length())));
            //ret[1] = sb.toString();
        } else {
            ret2.push({t:0,str: line2});
            //ret[1] = Util.htmlize(line2.toString()); // no change
        }

        return {lhs: ret1, rhs: ret2};
    },