From d2f540358f39b3cb89885f4733e51d8d183b4720 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 5 Jan 2014 17:56:21 +0000 Subject: [PATCH] Store mime type lookups in a hash. git-svn-id: http://svn.redmine.org/redmine/trunk@12484 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/mime_type.rb | 17 ++++++++++------- 1 file 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