]> source.dussan.org Git - redmine.git/commitdiff
move repositories helper to_utf8 logic to lib/redmine/codeset_util.rb for common...
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Thu, 17 Nov 2011 11:53:15 +0000 (11:53 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Thu, 17 Nov 2011 11:53:15 +0000 (11:53 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7825 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/repositories_helper.rb
lib/redmine/codeset_util.rb

index 69f2e2558617aee469d3fe9810309e35cc26768a..de017ef9b8d6d1d9dbd94718756f965debaf02a0 100644 (file)
@@ -117,35 +117,8 @@ module RepositoriesHelper
   end
 
   def to_utf8(str)
-    return str if str.nil?
-    str = to_utf8_internal(str)
-    if str.respond_to?(:force_encoding)
-      str.force_encoding('UTF-8')
-    end
-    str
-  end
-
-  def to_utf8_internal(str)
-    return str if str.nil?
-    if str.respond_to?(:force_encoding)
-      str.force_encoding('ASCII-8BIT')
-    end
-    return str if str.empty?
-    return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
-    if str.respond_to?(:force_encoding)
-      str.force_encoding('UTF-8')
-    end
-    @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip)
-    @encodings.each do |encoding|
-      begin
-        return Iconv.conv('UTF-8', encoding, str)
-      rescue Iconv::Failure
-        # do nothing here and try the next encoding
-      end
-    end
-    str = Redmine::CodesetUtil.replace_invalid_utf8(str)
+    Redmine::CodesetUtil.to_utf8_by_setting(str)
   end
-  private :to_utf8_internal
 
   def repository_field_tags(form, repository)
     method = repository.class.name.demodulize.underscore + "_field_tags"
index bf24080c6d5724462c0b559b4c64b1bc1f5aea02..b74a3a9e7e3e887479305b240f645388dc41e3df 100644 (file)
@@ -79,6 +79,40 @@ module Redmine
       str
     end
 
+    def self.to_utf8_by_setting(str)
+      return str if str.nil?
+      str = self.to_utf8_by_setting_internal(str)
+      if str.respond_to?(:force_encoding)
+        str.force_encoding('UTF-8')
+      end
+      str
+    end
+
+    def self.to_utf8_by_setting_internal(str)
+      return str if str.nil?
+      if str.respond_to?(:force_encoding)
+        str.force_encoding('ASCII-8BIT')
+      end
+      return str if str.empty?
+      return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
+      if str.respond_to?(:force_encoding)
+        str.force_encoding('UTF-8')
+      end
+      encodings = Setting.repositories_encodings.split(',').collect(&:strip)
+      encodings.each do |encoding|
+        begin
+          return Iconv.conv('UTF-8', encoding, str)
+        rescue Iconv::Failure
+          # do nothing here and try the next encoding
+        end
+      end
+      str = self.replace_invalid_utf8(str)
+      if str.respond_to?(:force_encoding)
+        str.force_encoding('UTF-8')
+      end
+      str
+    end
+
     def self.from_utf8(str, encoding)
       str ||= ''
       if str.respond_to?(:force_encoding)