def self.path(file, type = :soft, parameter = DEFAULT_PARAMETER)
return file if file =~ /data:.*;base64/
type = [:soft, :hard, :rails, :md5].include?(type) ? type : :soft
parameter = nil if type == :rails
file = self.clean(file, parameter)
filename = file.split(/[\?\#]/).first
raise ArgumentError.new("#{file} could not be found") unless File.exists?(filename)
mtime = File.mtime(filename).to_i
if type == :soft
parameter = "#{parameter}=".sub(/^=$/, '')
return "#{file}#{file.index('?') ? '&' : '?'}#{parameter}#{mtime}"
elsif type == :rails
return "#{file}#{file.index('?') ? '' : "?#{mtime}"}"
elsif type == :md5
md5 = Digest::MD5.hexdigest(File.read(filename))
return file.sub(/(\.[^\.]+([\?\#].*)?$)/, "-#{parameter}#{md5}" + '\1')
end
file.sub(/(\.[^\.]+([\?\#].*)?$)/, "-#{parameter}#{mtime}" + '\1')
end