# -*- encoding : utf-8 -*-
module Git
module Diff
class InlineCallback < ::Diff::Renderer::Base
def before_headerblock(block)
end
def after_headerblock(block)
end
def headerline(line)
"
"
end
def addline(line)
"
|
#{line.new_number} |
#{render_line(line)} |
"
end
def remline(line)
"
#{line.old_number} |
|
#{render_line(line)} |
"
end
def modline(line)
"
#{line.old_number} |
#{line.new_number} |
#{render_line(line)} |
"
end
def unmodline(line)
"
#{line.old_number} |
#{line.new_number} |
#{render_line(line)} |
"
end
def sepline(line)
"
… |
… |
|
"
end
def nonewlineline(line)
"
#{line.old_number} |
#{line.new_number} |
#{render_line(line)} |
"
end
protected
def escape(str)
str.to_s.gsub('&', '&').gsub('<', '<').gsub('>', '>').gsub('"', '"')
end
def render_line(line)
res = ''
if line.inline_changes?
prefix, changed, postfix = line.segments.map{|segment| escape(segment) }
res += "#{prefix}#{changed}#{postfix}"
else
res += escape(line)
end
res += ''
res
end
end
end
end