]> source.dussan.org Git - redmine.git/commitdiff
Change the case statement into a method call based on the name
authorEric Davis <edavis@littlestreamsoftware.com>
Fri, 16 Apr 2010 15:34:00 +0000 (15:34 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Fri, 16 Apr 2010 15:34:00 +0000 (15:34 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3674 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/custom_field_format.rb

index 29d82b4462e6f2dc9c7d23bc6089e695634a6c9c..336905666be896995d93331d2fe251011483004a 100644 (file)
@@ -30,6 +30,24 @@ module Redmine
       self.order = options[:order]
     end
 
+    def format(value)
+      send "format_as_#{name}", value
+    end
+
+    def format_as_date(value)
+      begin; format_date(value.to_date); rescue; value end
+    end
+
+    def format_as_bool(value)
+      l(value == "1" ? :general_text_Yes : :general_text_No)
+    end
+
+    ['string','text','int','float','list'].each do |name|
+      define_method("format_as_#{name}") {|value|
+        return value
+      }
+    end
+
     class << self
       def map(&block)
         yield self
@@ -64,11 +82,9 @@ module Redmine
 
       def format_value(value, field_format)
         return "" unless value && !value.empty?
-        case field_format
-        when "date"
-          begin; format_date(value.to_date); rescue; value end
-        when "bool"
-          l(value == "1" ? :general_text_Yes : :general_text_No)
+
+        if format_type = find_by_name(field_format)
+          format_type.format(value)
         else
           value
         end