Class: Libis::Format::TypeDatabase

Inherits:
Object
  • Object
show all
Defined in:
lib/libis/format/type_database.rb

Overview

noinspection RubyClassVariableUsageInspection

Class Method Summary collapse

Class Method Details

.enrich(info, map_keys = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/libis/format/type_database.rb', line 17

def self.enrich(info, map_keys = {})
  return {} unless info.is_a? Hash
  mapper = Hash.new {|hash,key| hash[key] = key}
  mapper.merge! map_keys
  unless (puid = info[mapper[:PUID]]).blank?
    info[mapper[:TYPE]] ||= puid_infos(puid).first[:TYPE] rescue nil
  end
  unless (mime = info[mapper[:MIME]]).blank?
    info[mapper[:TYPE]] ||= mime_infos(mime).first[:TYPE] rescue nil
  end
  unless (type_name = info[mapper[:TYPE]]).nil?
    mapper.keys.each do |key|
      info[mapper[key]] = get(type_name, key) || info[mapper[key]]
    end
    info[mapper[:GROUP]] = type_group(type_name)
  end
  info
end

.ext_infos(ext) ⇒ Object



114
115
116
# File 'lib/libis/format/type_database.rb', line 114

def self.ext_infos(ext)
  @implementation.ext_infos(ext)
end

.ext_types(ext) ⇒ Object



118
119
120
# File 'lib/libis/format/type_database.rb', line 118

def self.ext_types(ext)
  @implementation.ext_types(ext)
end

.get(type_name, key) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/libis/format/type_database.rb', line 53

def self.get(type_name, key)
  case key
    when :MIME
      type_mimetypes(type_name).first
    when :PUID
      type_puids(type_name).first
    when :EXTENSION
      type_extentions(type_name).first
    else
      typeinfo(type_name)[key]
  end
end

.group_types(group) ⇒ Object



86
87
88
# File 'lib/libis/format/type_database.rb', line 86

def self.group_types(group)
  @implementation.group_types(group)
end

.implementation(impl) ⇒ Object



13
14
15
# File 'lib/libis/format/type_database.rb', line 13

def self.implementation(impl)
  @implementation = impl
end

.known_mime?(mime) ⇒ Boolean

Returns:

  • (Boolean)


126
127
128
# File 'lib/libis/format/type_database.rb', line 126

def self.known_mime?(mime)
  @implementation.known_mime?(mime)
end

.mime_groups(mime) ⇒ Object



110
111
112
# File 'lib/libis/format/type_database.rb', line 110

def self.mime_groups(mime)
  mime_types(mime).map(&method(:type_group))
end

.mime_infos(mime) ⇒ Object



102
103
104
# File 'lib/libis/format/type_database.rb', line 102

def self.mime_infos(mime)
  @implementation.mime_infos(mime)
end

.mime_types(mime) ⇒ Object



106
107
108
# File 'lib/libis/format/type_database.rb', line 106

def self.mime_types(mime)
  @implementation.mime_types(mime)
end

.normalize(info, map_keys = {}) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/libis/format/type_database.rb', line 36

def self.normalize(info, map_keys = {})
  return {} unless info.is_a? Hash
  mapper = Hash.new {|hash,key| hash[key] = key}
  mapper.merge! map_keys
  unless (puid = info[mapper[:PUID]]).blank?
    info[mapper[:TYPE]] ||= puid_infos(puid).first[:TYPE] rescue nil
  end
  unless (mime = info[mapper[:MIME]]).blank?
    info[mapper[:TYPE]] ||= mime_infos(mime).first[:TYPE] rescue nil
  end
  unless (type_name = info[mapper[:TYPE]]).nil?
    info[mapper[:MIME]] = type_mimetypes(type_name).first if type_mimetypes(type_name).first
    info[mapper[:GROUP]] = type_group(type_name)
  end
  info
end

.puid_groups(puid) ⇒ Object



98
99
100
# File 'lib/libis/format/type_database.rb', line 98

def self.puid_groups(puid)
  puid_types(puid).map(&method(:type_group))
end

.puid_infos(puid) ⇒ Object



90
91
92
# File 'lib/libis/format/type_database.rb', line 90

def self.puid_infos(puid)
  @implementation.puid_infos(puid)
end

.puid_typeinfo(puid) ⇒ Object



122
123
124
# File 'lib/libis/format/type_database.rb', line 122

def self.puid_typeinfo(puid)
  @implementation.puid_typeinfo(puid)
end

.puid_types(puid) ⇒ Object



94
95
96
# File 'lib/libis/format/type_database.rb', line 94

def self.puid_types(puid)
  @implementation.puid_types(puid)
end

.type_extentions(t) ⇒ Object



78
79
80
# File 'lib/libis/format/type_database.rb', line 78

def self.type_extentions(t)
  typeinfo(t)[:EXTENSIONS] || []
end

.type_group(t) ⇒ Object



66
67
68
# File 'lib/libis/format/type_database.rb', line 66

def self.type_group(t)
  typeinfo(t)[:GROUP]
end

.type_mimetypes(t) ⇒ Object



70
71
72
# File 'lib/libis/format/type_database.rb', line 70

def self.type_mimetypes(t)
  typeinfo(t)[:MIME] || []
end

.type_puids(t) ⇒ Object



74
75
76
# File 'lib/libis/format/type_database.rb', line 74

def self.type_puids(t)
  typeinfo(t)[:PUID] || []
end

.typeinfo(t) ⇒ Object



82
83
84
# File 'lib/libis/format/type_database.rb', line 82

def self.typeinfo(t)
  @implementation.typeinfo(t)
end