mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
Use same format as mime type lib
This commit is contained in:
@@ -2,27 +2,42 @@ require 'mime/types'
|
||||
require 'yaml'
|
||||
|
||||
# Register additional mime type extensions
|
||||
mime_extensions = YAML.load_file(File.expand_path("../mimes.yml", __FILE__))
|
||||
mime_extensions.each do |mime_type, options|
|
||||
mime = MIME::Types[mime_type].first || MIME::Type.new(mime_type)
|
||||
File.read(File.expand_path("../mimes.yml", __FILE__)).lines.each do |line|
|
||||
next unless line =~ %r{^
|
||||
#{MIME::Type::MEDIA_TYPE_RE}
|
||||
(?:\s@([^\s]+))?
|
||||
(?:\s:(#{MIME::Type::ENCODING_RE}))?
|
||||
}x
|
||||
|
||||
(options['extensions'] || []).each { |ext| mime.extensions << ext }
|
||||
mediatype = $1
|
||||
subtype = $2
|
||||
extensions = $3
|
||||
encoding = $4
|
||||
|
||||
(options['exclude_extensions'] || []).each do |ext|
|
||||
mime.extensions.delete(ext)
|
||||
mime_type = MIME::Types["#{mediatype}/#{subtype}"].first ||
|
||||
MIME::Type.new("#{mediatype}/#{subtype}")
|
||||
|
||||
if extensions
|
||||
extensions.split(/,/).each do |extension|
|
||||
if extension =~ /^-(\w+)/
|
||||
extension = $1
|
||||
mime_type.extensions.delete(extension)
|
||||
|
||||
MIME::Types.instance_eval do
|
||||
@__types__.instance_eval do
|
||||
@extension_index[ext].delete(mime)
|
||||
@extension_index[extension].delete(mime_type)
|
||||
end
|
||||
end
|
||||
else
|
||||
mime_type.extensions << extension
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
mime.binary = options['binary'] if options.key?('binary')
|
||||
mime.encoding = options['encoding'] if options.key?('encoding')
|
||||
mime_type.encoding = encoding
|
||||
|
||||
MIME::Types.add_type_variant(mime)
|
||||
MIME::Types.index_extensions(mime)
|
||||
MIME::Types.add_type_variant(mime_type)
|
||||
MIME::Types.index_extensions(mime_type)
|
||||
end
|
||||
|
||||
module Linguist
|
||||
|
||||
@@ -1,92 +1,26 @@
|
||||
# Additional types to add to MIME::Types
|
||||
#
|
||||
# <type> @<extensions> :<encoding>
|
||||
#
|
||||
# Follows same format as mime-types data file
|
||||
# https://github.com/halostatue/mime-types/blob/master/lib/mime/types.rb.data
|
||||
|
||||
application/x-troff-ms:
|
||||
encoding: 8bit
|
||||
# TODO: Lookup actual types
|
||||
application/octet-stream @a,blend,gem,graffle,ipa,lib,mcz,nib,o,odp,ods,odt,otf,ogv,pfx,pigx,plgx,pptx,psd,sib,spl,sqlite3,swc,ucode,xpi
|
||||
|
||||
application/netcdf:
|
||||
encoding: 8bit
|
||||
|
||||
application/x-pagemaker:
|
||||
exclude_extensions:
|
||||
- pm
|
||||
|
||||
application/x-wais-source:
|
||||
encoding: 8bit
|
||||
|
||||
application/vnd.mozilla.xul+xml:
|
||||
encoding: 8bit
|
||||
|
||||
application/vnd.adobe.air-application-installer-package+zip:
|
||||
extensions:
|
||||
- air
|
||||
|
||||
application/octet-stream:
|
||||
extensions:
|
||||
# TODO: Lookup actual content type for these extensions
|
||||
- a
|
||||
- blend
|
||||
- gem
|
||||
- graffle
|
||||
- ipa
|
||||
- lib
|
||||
- mcz
|
||||
- nib
|
||||
- o
|
||||
- odp
|
||||
- ods
|
||||
- odt
|
||||
- otf
|
||||
- ogv
|
||||
- pfx
|
||||
- pigx
|
||||
- plgx
|
||||
- pptx
|
||||
- psd
|
||||
- sib
|
||||
- spl
|
||||
- sqlite3
|
||||
- swc
|
||||
- ucode
|
||||
- xpi
|
||||
|
||||
application/postscript:
|
||||
encoding: base64
|
||||
|
||||
application/java-archive:
|
||||
extensions:
|
||||
- ear
|
||||
- war
|
||||
|
||||
application/x-chrome-extension:
|
||||
extensions:
|
||||
- crx
|
||||
|
||||
application/x-shockwave-flash:
|
||||
extensions:
|
||||
- swf
|
||||
|
||||
image/x-icns:
|
||||
extensions:
|
||||
- icns
|
||||
|
||||
text/cache-manifest:
|
||||
extensions:
|
||||
- manifest
|
||||
|
||||
application/ogg:
|
||||
extensions:
|
||||
- ogg
|
||||
|
||||
application/x-silverlight-app:
|
||||
extensions:
|
||||
- xap
|
||||
|
||||
application/xaml+xml:
|
||||
encoding: 8bit
|
||||
extensions:
|
||||
- xaml
|
||||
|
||||
application/x-ms-xbap:
|
||||
encoding: 8bit
|
||||
extensions:
|
||||
- xbap
|
||||
application/java-archive @ear,war
|
||||
application/netcdf :8bit
|
||||
application/ogg @ogg
|
||||
application/postscript :base64
|
||||
application/vnd.adobe.air-application-installer-package+zip @air
|
||||
application/vnd.mozilla.xul+xml :8bit
|
||||
application/x-chrome-extension @crx
|
||||
application/x-ms-xbap @xbap :8bit
|
||||
application/x-pagemaker @-pm
|
||||
application/x-shockwave-flash @swf
|
||||
application/x-silverlight-app @xap
|
||||
application/x-troff-ms :8bit
|
||||
application/x-wais-source :8bit
|
||||
application/xaml+xml @xaml :8bit
|
||||
image/x-icns @icns
|
||||
text/cache-manifest @manifest
|
||||
|
||||
@@ -120,6 +120,7 @@ class TestMime < Test::Unit::TestCase
|
||||
assert !Mime.binary?("application/xaml+xml")
|
||||
assert !Mime.binary?("application/xhtml+xml")
|
||||
assert !Mime.binary?("application/xml")
|
||||
assert !Mime.binary?("text/cache-manifest")
|
||||
assert !Mime.binary?("text/css")
|
||||
assert !Mime.binary?("text/csv")
|
||||
assert !Mime.binary?("text/html")
|
||||
|
||||
Reference in New Issue
Block a user