summaryrefslogtreecommitdiffstats
path: root/lib/redmine
diff options
context:
space:
mode:
Diffstat (limited to 'lib/redmine')
-rw-r--r--lib/redmine/mime_type.rb17
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/redmine/mime_type.rb b/lib/redmine/mime_type.rb
index 7231e9898..caca97106 100644
--- a/lib/redmine/mime_type.rb
+++ b/lib/redmine/mime_type.rb
@@ -55,13 +55,16 @@ module Redmine
# returns mime type for name or nil if unknown
def self.of(name)
- return nil unless name
- m = name.to_s.match(/(^|\.)([^\.]+)$/)
- ext = m[2].downcase
- type = nil
- type = EXTENSIONS[ext] if m
- type ||= MIME::Types.find {|type| type.extensions.include?(ext)}.to_s.presence
- type
+ return nil unless name.present?
+ if m = name.to_s.match(/(^|\.)([^\.]+)$/)
+ extension = m[2].downcase
+ @known_types ||= Hash.new do |h, ext|
+ type = EXTENSIONS[ext]
+ type ||= MIME::Types.find {|type| type.extensions.include?(ext)}.to_s.presence
+ h[ext] = type
+ end
+ @known_types[extension]
+ end
end
# Returns the css class associated to