From: Toshi MARUYAMA Date: Mon, 21 Feb 2011 03:59:50 +0000 (+0000) Subject: Ruby 1.9 compatibility of unified_diff.rb. X-Git-Tag: 1.2.0~925 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7a9136f93ac567184ffe41e00f9c603cb2f23c10;p=redmine.git Ruby 1.9 compatibility of unified_diff.rb. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4897 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/lib/redmine/unified_diff.rb b/lib/redmine/unified_diff.rb index 09fbfcf1a..65d880dd7 100644 --- a/lib/redmine/unified_diff.rb +++ b/lib/redmine/unified_diff.rb @@ -22,12 +22,20 @@ module Redmine 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 + line.force_encoding(line_encoding) if line_encoding self << diff_table if diff_table.length > 1 diff_table = DiffTable.new(diff_type) end @@ -40,7 +48,7 @@ module Redmine self << diff_table unless diff_table.empty? self end - + def truncated?; @truncated; end end