From 7a9136f93ac567184ffe41e00f9c603cb2f23c10 Mon Sep 17 00:00:00 2001 From: Toshi MARUYAMA Date: Mon, 21 Feb 2011 03:59:50 +0000 Subject: [PATCH] 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 --- lib/redmine/unified_diff.rb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 -- 2.39.5