Mercurial > hg > soundsoftware-site
diff lib/redmine/unified_diff.rb @ 245:051f544170fe
* Update to SVN trunk revision 4993
author | Chris Cannam |
---|---|
date | Thu, 03 Mar 2011 11:42:28 +0000 |
parents | 513646585e45 |
children | cbce1fd3b1b7 |
line wrap: on
line diff
--- a/lib/redmine/unified_diff.rb Thu Mar 03 11:40:10 2011 +0000 +++ b/lib/redmine/unified_diff.rb Thu Mar 03 11:42:28 2011 +0000 @@ -22,13 +22,21 @@ options.assert_valid_keys(:type, :max_lines) diff = diff.split("\n") if diff.is_a?(String) diff_type = options[:type] || 'inline' - lines = 0 @truncated = false diff_table = DiffTable.new(diff_type) diff.each do |line| + line_encoding = nil + if line.respond_to?(:force_encoding) + line_encoding = line.encoding + # TODO: UTF-16 and Japanese CP932 which is imcompatible with ASCII + # In Japan, diffrence between file path encoding + # and file contents encoding is popular. + line.force_encoding('ASCII-8BIT') + end unless diff_table.add_line line - self << diff_table if diff_table.length > 1 + line.force_encoding(line_encoding) if line_encoding + self << diff_table if diff_table.length > 0 diff_table = DiffTable.new(diff_type) end lines += 1 @@ -40,7 +48,7 @@ self << diff_table unless diff_table.empty? self end - + def truncated?; @truncated; end end