Compare projects

I don’t know if anyone can use this or not, but I thought I would share it anyways. I had 2 projects, one where I made some changes to, but I didn’t remember what/why something was changed. I didn’t want to try comparing them on 2 different iPads, so I wrote this. It was easy to see what the differences were. The code of the 2 projects were listed side by side and scrollable.

To use, key in the names of the 2 projects you want to compare as name1 and name2. Run the code and use the size slider to vary the width of the text to fit half the screen. Scrolling the text on the left half of the screen will close the parameter window (or manually close it) and move both text areas up or down together. Scrolling the text on the right half will only scroll that side so you can resync the code as you move down comparing the code and seeing any differences.

PS. Make sure there’s a blank line at the end of the projects or the last line won’t be seen. Not sure how to fix that yet because the gmatch code needs to find a
to get that line of text.

viewer.mode=OVERLAY

function setup()
    name1="Qwert"
    name2="Asdfg"
    
    parameter.integer("size",20,80,40,setup1)
    textMode(CORNER)
    fill(255)
    setup1()
end

function setup1()
    dy1,dy2=0,0
    tab1,tab2={},{}
    process1()
    process2()
end


function process1()    
    str=""
    l=listProjectTabs(name1)
    for a,b in pairs(l) do
        str=str..readProjectTab(name1..":"..b)
    end
    for b in string.gmatch(str,".-%\
") do
        b=string.gsub(b,"\
"," ")        
        c,st=0,1
        while c<#b do
            table.insert(tab1,string.sub(b,st,st+size-1))
            c=c+size
            st=st+size
        end
    end
end

function process2()   
    str=""
    l=listProjectTabs(name2)
    for a,b in pairs(l) do
        str=str..readProjectTab(name2..":"..b)
    end
    for b in string.gmatch(str,".-%\
") do
        b=string.gsub(b,"\
"," ") 
        c,st=0,1
        while c<#b do
            table.insert(tab2,string.sub(b,st,st+size-1))
            c=c+size
            st=st+size
        end
    end
end    

function draw()
    background(0)
    stroke(50)
    strokeWidth(12)
    for z=1,HEIGHT/20 do
        line(0,z*20,WIDTH,z*20)
    end
    stroke(255)
    strokeWidth(2)
    line(WIDTH/2,0,WIDTH/2,HEIGHT)
    for a,b in pairs(tab1) do
        text(b,0,HEIGHT-a*20+dy1-50)
    end
    for a,b in pairs(tab2) do
        text(b,WIDTH/2,HEIGHT-a*20+dy2-50)
    end    
end

function touched(t)
    if t.state==BEGAN then
        viewer.mode=FULLSCREEN
        end
    if t.x<WIDTH/2 then
        dy1=dy1+t.deltaY
        dy2=dy2+t.deltaY
    else
        dy2=dy2+t.deltaY
    end  
end