6ea87c47f0
When displaying a diff, the line number always starts at one, even if the first diff is not at the first line Fixes this to display correct line numbering on first diff
90 lines
2.1 KiB
Ruby
90 lines
2.1 KiB
Ruby
module CommitsHelper
|
|
def old_line_number(line, i)
|
|
|
|
end
|
|
|
|
def new_line_number(line, i)
|
|
|
|
end
|
|
|
|
def more_commits_link
|
|
offset = params[:offset] || 0
|
|
limit = params[:limit] || 100
|
|
link_to "More", project_commits_path(@project, :offset => offset.to_i + limit.to_i, :limit => limit),
|
|
:remote => true, :class => "lite_button vm", :style => "text-align:center; width:930px; ", :id => "more-commits-link"
|
|
end
|
|
|
|
def commit_msg_with_link_to_issues(project, message)
|
|
return '' unless message
|
|
out = ''
|
|
message.split(/(#[0-9]+)/m).each do |m|
|
|
if m =~ /(#([0-9]+))/m
|
|
begin
|
|
issue = project.issues.find($2)
|
|
out += link_to($1, project_issue_path(project, $2))
|
|
rescue
|
|
out += $1
|
|
end
|
|
else
|
|
out += m
|
|
end
|
|
end
|
|
preserve out
|
|
end
|
|
|
|
def diff_line_class(line)
|
|
if line[0] == "+"
|
|
"new"
|
|
elsif line[0] == "-"
|
|
"old"
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
|
|
def build_line_code(line, index, line_new, line_old)
|
|
"#{index}_#{line_old}_#{line_new}"
|
|
end
|
|
|
|
def each_diff_line(diff_arr, index)
|
|
line_old = 1
|
|
line_new = 1
|
|
type = nil
|
|
|
|
lines_arr = diff_arr
|
|
lines_arr.each do |line|
|
|
next if line.match(/^\-\-\- \/dev\/null/)
|
|
next if line.match(/^\+\+\+ \/dev\/null/)
|
|
next if line.match(/^\-\-\- a/)
|
|
next if line.match(/^\+\+\+ b/)
|
|
|
|
full_line = html_escape(line.gsub(/\n/, '')).force_encoding("UTF-8")
|
|
|
|
if line.match(/^@@ -/)
|
|
type = "match"
|
|
|
|
line_old = line.match(/\-[0-9]*/)[0].to_i.abs rescue 0
|
|
line_new = line.match(/\+[0-9]*/)[0].to_i.abs rescue 0
|
|
|
|
next if line_old == 1 && line_new == 1
|
|
yield(line, type, nil, nil, nil)
|
|
next
|
|
else
|
|
type = diff_line_class(line)
|
|
line_code = build_line_code(line, index, line_new, line_old)
|
|
yield(full_line, type, line_code, line_new, line_old)
|
|
end
|
|
|
|
|
|
if line[0] == "+"
|
|
line_new += 1
|
|
elsif line[0] == "-"
|
|
line_old += 1
|
|
else
|
|
line_new += 1
|
|
line_old += 1
|
|
end
|
|
end
|
|
end
|
|
end
|