### codetube
    Copyright (C) 2011 payload payload@lavabit.com
    Copyright (C) 2011 dodo dodo.the.last@gmail.com

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>
###

{ diffChars } = require 'diff'
{ View } = require './skeleton'

class DiffView extends View
    template: (args...) ->
        lift.call 'diff', args...

    transform: () => # prepare data for template
        file = @model.toJSON()
        for chunk in file.chunks
            prev_line = {}
            for line in chunk.lines
                # FIXME this covers only one line changes (doesnt make much sense for multi line diffs)
                if line.type is '+' and prev_line.type is '-'
                    diffs = diffChars(prev_line.line, line.line)
                    [prev_line.line, line.line] = [diffs, diffs]
                prev_line = line
        {file, project: {@owner, id:@project, @sha}}

module.exports = { DiffView }

