Example #1
0
def get_blocks_diff(a,b):
    d=difflib.Differ()
    res_r=[]
    cb_r=[]
    res_l=[]
    cb_l=[]
    change_l=False
    change_r=False
    result=list(d.compare(a.splitlines(), b.splitlines()))
    #from pprint import pprint
    #pprint(result)
    for i in result:
        data=i[2:]
        if i[:2]=='? ':
            continue
        if i[:2]=='  ':
            if not change_l and not change_r:
                cb_r.append(data)
                cb_l.append(data)
            elif not change_l and change_r:
                res_r.append(cb_r)
                cb_r=UserList([data])
                cb_l.append(data)
            elif change_l and not change_r:
                res_l.append(cb_l)
                cb_l=UserList([data])
                cb_r.append(data)
            elif change_l and change_r:
                res_r.append(cb_r)
                cb_r=UserList([data])
                res_l.append(cb_l)
                cb_l=UserList([data])
            change_r=False
            change_l=False
        elif i[:2]=='- ':
            if not change_l:
                res_l.append(cb_l)
                cb_l=UserList([data])
            elif change_l:
                cb_l.append(data)
            cb_l.added=True
            change_l=True
            #print "1"
        elif i[:2]=='+ ':
            if not change_r:
                res_r.append(cb_r)
                cb_r=UserList([data])
            elif change_r:
                cb_r.append(data)
            cb_r.added=True            
            change_r=True
    if len(cb_r)>0: res_r.append(cb_r)
    if len(cb_l)>0: res_l.append(cb_l)
    return res_l, res_r