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



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/libis/format/type_database.rb', line 16

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]] ||= begin
      puid_infos(puid).first[:TYPE]
    rescue StandardError
      nil
    end
  end
  unless (mime = info[mapper[:MIME]]).blank?
    info[mapper[:TYPE]] ||= begin
      mime_infos(mime).first[:TYPE]
    rescue StandardError
      nil
    end
  end
  unless (type_name = info[mapper[:TYPE]]).nil?
    mapper.each_key do |key|
      info[mapper[key]] = get(type_name, key) || info[mapper[key]]
    end
    info[mapper[:GROUP]] = type_group(type_name)
  end
  info
end

.export_csv(filename, **options) ⇒ Object



151
152
153
# File 'lib/libis/format/type_database.rb', line 151

def self.export_csv(filename, **options)
  @implementation.export_csv(filename, **options)
end

.ext_infos(ext) ⇒ Object



131
132
133
# File 'lib/libis/format/type_database.rb', line 131

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

.ext_types(ext) ⇒ Object



135
136
137
# File 'lib/libis/format/type_database.rb', line 135

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

.get(type_name, key) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/libis/format/type_database.rb', line 70

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



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

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

.groupsObject



147
148
149
# File 'lib/libis/format/type_database.rb', line 147

def self.groups
  @implementation.groups
end

.implementation(impl) ⇒ Object



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

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

.known_mime?(mime) ⇒ Boolean

Returns:

  • (Boolean)


143
144
145
# File 'lib/libis/format/type_database.rb', line 143

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

.mime_groups(mime) ⇒ Object



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

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

.mime_infos(mime) ⇒ Object



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

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

.mime_types(mime) ⇒ Object



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

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

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



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/libis/format/type_database.rb', line 44

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]] ||= begin
      puid_infos(puid).first[:TYPE]
    rescue StandardError
      nil
    end
  end
  unless (mime = info[mapper[:MIME]]).blank?
    info[mapper[:TYPE]] ||= begin
      mime_infos(mime).first[:TYPE]
    rescue StandardError
      nil
    end
  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



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

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

.puid_infos(puid) ⇒ Object



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

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

.puid_typeinfo(puid) ⇒ Object



139
140
141
# File 'lib/libis/format/type_database.rb', line 139

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

.puid_types(puid) ⇒ Object



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

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

.type_extentions(ftype) ⇒ Object



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

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

.type_group(ftype) ⇒ Object



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

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

.type_mimetypes(ftype) ⇒ Object



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

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

.type_puids(ftype) ⇒ Object



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

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

.typeinfo(ftype) ⇒ Object



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

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