From 633e026e4494ba5452c78288a581fca3478687fb Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Fri, 12 Dec 2008 19:49:22 +0000 Subject: Merged r2110 to r2112 (diff limit) from trunk. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.8-stable@2132 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/unified_diff.rb | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/redmine/unified_diff.rb b/lib/redmine/unified_diff.rb index 36a36cba5..bf4dec335 100644 --- a/lib/redmine/unified_diff.rb +++ b/lib/redmine/unified_diff.rb @@ -18,18 +18,30 @@ module Redmine # Class used to parse unified diffs class UnifiedDiff < Array - def initialize(diff, type="inline") - diff_table = DiffTable.new type + def initialize(diff, options={}) + options.assert_valid_keys(:type, :max_lines) + diff_type = options[:type] || 'inline' + + lines = 0 + @truncated = false + diff_table = DiffTable.new(diff_type) diff.each do |line| if line =~ /^(---|\+\+\+) (.*)$/ self << diff_table if diff_table.length > 1 - diff_table = DiffTable.new type + diff_table = DiffTable.new(diff_type) + end + diff_table.add_line line + lines += 1 + if options[:max_lines] && lines > options[:max_lines] + @truncated = true + break end - a = diff_table.add_line line end self << diff_table unless diff_table.empty? self end + + def truncated?; @truncated; end end # Class that represents a file diff -- cgit v1.2.3