Class: Libis::Format::TypeDatabaseImpl
- Inherits:
-
Object
- Object
- Libis::Format::TypeDatabaseImpl
- Includes:
- Tools::Logger, Singleton
- Defined in:
- lib/libis/format/type_database_impl.rb
Instance Method Summary collapse
- #ext_infos(ext) ⇒ Object
- #ext_types(ext) ⇒ Object
- #group_types(group) ⇒ Object
- #known_mime?(mime) ⇒ Boolean
- #load_types(file_or_hash = {}, append = true) ⇒ Object
- #mime_infos(mime) ⇒ Object
- #mime_types(mime) ⇒ Object
- #puid_infos(puid) ⇒ Object
- #puid_typeinfo(puid) ⇒ Object
- #puid_types(puid) ⇒ Object
- #typeinfo(t) ⇒ Object
Instance Method Details
#ext_infos(ext) ⇒ Object
51 52 53 54 55 56 |
# File 'lib/libis/format/type_database_impl.rb', line 51 def ext_infos(ext) ext = ext.gsub /^\./, '' @types.select do |_, v| v[:EXTENSIONS].include?(ext) rescue false end.values end |
#ext_types(ext) ⇒ Object
58 59 60 61 62 63 |
# File 'lib/libis/format/type_database_impl.rb', line 58 def ext_types(ext) ext = ext.gsub /^\./, '' @types.select do |_, v| v[:EXTENSIONS].include?(ext) rescue false end.keys end |
#group_types(group) ⇒ Object
21 22 23 24 25 |
# File 'lib/libis/format/type_database_impl.rb', line 21 def group_types(group) @types.select do |_, v| v[:GROUP] == group.to_sym end.keys end |
#known_mime?(mime) ⇒ Boolean
72 73 74 75 76 77 |
# File 'lib/libis/format/type_database_impl.rb', line 72 def known_mime?(mime) @types.each do |_, v| return true if v[:MIME].include? mime end false end |
#load_types(file_or_hash = {}, append = true) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/libis/format/type_database_impl.rb', line 79 def load_types(file_or_hash = {}, append = true) hash = file_or_hash.is_a?(Hash) ? file_or_hash : YAML::load_file(file_or_hash) # noinspection RubyResolve hash.each do |group, type_info| type_info.each do |type_name, info| type_key = type_name.to_sym info.symbolize_keys! info[:TYPE] = type_key info[:GROUP] = group.to_sym info[:MIME] = info[:MIME].strip.split(/[\s,]+/).map(&:strip) rescue [] info[:EXTENSIONS] = info[:EXTENSIONS].strip.split(/[\s,]+/).map { |v| v.strip } rescue [] info[:PUID] = info[:PUID].strip.split(/[\s,]+/).map { |v| v.strip } if info[:PUID] if @types.has_key?(type_key) warn 'Type %s already defined; merging with info from %s.', type_name.to_s, file_or_hash info.merge!(@types[type_key]) do |_,v_new,v_old| case v_old when Array append ? v_old + v_new : v_new + v_old when Hash append ? v_new.merge(v_old) : v_old.merge(v_new) else append ? v_old : v_new end end end @types[type_key] = info end end end |
#mime_infos(mime) ⇒ Object
39 40 41 42 43 |
# File 'lib/libis/format/type_database_impl.rb', line 39 def mime_infos(mime) @types.select do |_, v| v[:MIME].include? mime rescue false end.values end |
#mime_types(mime) ⇒ Object
45 46 47 48 49 |
# File 'lib/libis/format/type_database_impl.rb', line 45 def mime_types(mime) @types.select do |_, v| v[:MIME].include? mime rescue false end.keys end |
#puid_infos(puid) ⇒ Object
27 28 29 30 31 |
# File 'lib/libis/format/type_database_impl.rb', line 27 def puid_infos(puid) @types.select do |_, v| v[:PUID].include? puid rescue false end.values end |
#puid_typeinfo(puid) ⇒ Object
65 66 67 68 69 70 |
# File 'lib/libis/format/type_database_impl.rb', line 65 def puid_typeinfo(puid) @types.each do |_, v| return v if v[:PUID] and v[:PUID].include?(puid) end nil end |
#puid_types(puid) ⇒ Object
33 34 35 36 37 |
# File 'lib/libis/format/type_database_impl.rb', line 33 def puid_types(puid) @types.select do |_, v| v[:PUID].include? puid rescue false end.keys end |
#typeinfo(t) ⇒ Object
17 18 19 |
# File 'lib/libis/format/type_database_impl.rb', line 17 def typeinfo(t) @types[t.to_sym] || {} end |