78 lines
2.3 KiB
Ruby
78 lines
2.3 KiB
Ruby
module Git
|
|
module Diff
|
|
class InlineCallback < ::Diff::Renderer::Base
|
|
def addline(line)
|
|
"<tr class='changes'>
|
|
<td></td>
|
|
<td class='line_numbers'></td>
|
|
<td class='line_numbers'>#{line.new_number}</td>
|
|
<td class='code ins'>#{render_line(line)}</td>
|
|
</tr>"
|
|
end
|
|
|
|
def remline(line)
|
|
"<tr class='changes'>
|
|
<td></td>
|
|
<td class='line_numbers'>#{line.old_number}</td>
|
|
<td class='line_numbers'></td>
|
|
<td class='code del'>#{render_line(line)}</td>
|
|
</tr>"
|
|
end
|
|
|
|
def modline(line)
|
|
"<tr clas='chanes line'>
|
|
<td></td>
|
|
<td class='line_numbers'>#{line.old_number}</td>
|
|
<td class='line_numbers'>#{line.new_number}</td>
|
|
<td class='code unchanged modline'>#{render_line(line)}</td>
|
|
</tr>"
|
|
end
|
|
|
|
def unmodline(line)
|
|
"<tr class='changes unmodline'>
|
|
<td></td>
|
|
<td class='line_numbers'>#{line.old_number}</td>
|
|
<td class='line_numbers'>#{line.new_number}</td>
|
|
<td class='code unchanged unmodline'>#{render_line(line)}</td>
|
|
</tr>"
|
|
end
|
|
|
|
def sepline(line)
|
|
"<tr class='changes hunk-sep'>
|
|
<td></td>
|
|
<td class='line_numbers line_num_cut'>…</td>
|
|
<td class='line_numbers line_num_cut'>…</td>
|
|
<td class='code cut-line'></td>
|
|
</tr>"
|
|
end
|
|
|
|
def nonewlineline(line)
|
|
"<tr class='changes'>
|
|
<td></td>
|
|
<td class='line_numbers'>#{line.old_number}</td>
|
|
<td class='line_numbers'>#{line.new_number}</td>
|
|
<td class='code modline unmodline'>#{render_line(line)}</td>
|
|
</tr>"
|
|
end
|
|
|
|
protected
|
|
def escape(str)
|
|
str.to_s.gsub('&', '&').gsub('<', '<').gsub('>', '>').gsub('"', '"')
|
|
end
|
|
|
|
def render_line(line)
|
|
res = '<span class="diff-content">'
|
|
if line.inline_changes?
|
|
prefix, changed, postfix = line.segments.map{|segment| escape(segment) }
|
|
res += "#{prefix}<span class='idiff'>#{changed}</span>#{postfix}"
|
|
else
|
|
res += escape(line)
|
|
end
|
|
res += '</span>'
|
|
|
|
res
|
|
end
|
|
end
|
|
end
|
|
end
|