Class: Libis::Format::Library
- Inherits:
-
Object
- Object
- Libis::Format::Library
- Includes:
- Singleton
- Defined in:
- lib/libis/format/library.rb
Class Method Summary collapse
- .enrich(info, map_keys = {}) ⇒ Object
- .get_field(format, field) ⇒ Object
- .get_field_by(key, value, field) ⇒ Object
- .get_fields_by(key, value, field) ⇒ Object
- .get_info(format) ⇒ Object
- .get_info_by(key, value) ⇒ Object
- .get_infos_by(key, value) ⇒ Object
- .implementation=(impl) ⇒ Object
- .known?(key, value) ⇒ Boolean
- .normalize(info, map_keys = {}) ⇒ Object
Instance Method Summary collapse
- #enrich(info, map_keys = {}) ⇒ Object
- #get_field(format, field) ⇒ Object
- #get_field_by(key, value, field) ⇒ Object
- #get_fields_by(key, value, field) ⇒ Object
- #get_info(format) ⇒ Object
- #get_info_by(key, value) ⇒ Object
- #get_infos_by(key, value) ⇒ Object
- #implementation=(impl) ⇒ Object
- #known?(key, value) ⇒ Boolean
-
#normalize(info, map_keys = {}) ⇒ Object
Derive name from the available info.
Class Method Details
.enrich(info, map_keys = {}) ⇒ Object
44 45 46 |
# File 'lib/libis/format/library.rb', line 44 def enrich(info, map_keys = {}) instance.enrich(info, map_keys) end |
.get_field(format, field) ⇒ Object
28 29 30 |
# File 'lib/libis/format/library.rb', line 28 def get_field(format, field) instance.get_field(format, field) end |
.get_field_by(key, value, field) ⇒ Object
32 33 34 |
# File 'lib/libis/format/library.rb', line 32 def get_field_by(key, value, field) instance.get_field_by(key, value, field) end |
.get_fields_by(key, value, field) ⇒ Object
36 37 38 |
# File 'lib/libis/format/library.rb', line 36 def get_fields_by(key, value, field) instance.get_fields_by(key, value, field) end |
.get_info(format) ⇒ Object
16 17 18 |
# File 'lib/libis/format/library.rb', line 16 def get_info(format) instance.get_info(format) end |
.get_info_by(key, value) ⇒ Object
20 21 22 |
# File 'lib/libis/format/library.rb', line 20 def get_info_by(key, value) instance.get_info_by(key, value) end |
.get_infos_by(key, value) ⇒ Object
24 25 26 |
# File 'lib/libis/format/library.rb', line 24 def get_infos_by(key, value) instance.get_infos_by(key, value) end |
.implementation=(impl) ⇒ Object
12 13 14 |
# File 'lib/libis/format/library.rb', line 12 def implementation=(impl) instance.implementation = impl end |
.known?(key, value) ⇒ Boolean
40 41 42 |
# File 'lib/libis/format/library.rb', line 40 def known?(key, value) instance.known?(key, value) end |
.normalize(info, map_keys = {}) ⇒ Object
48 49 50 |
# File 'lib/libis/format/library.rb', line 48 def normalize(info, map_keys = {}) instance.normalize(info, map_keys) end |
Instance Method Details
#enrich(info, map_keys = {}) ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/libis/format/library.rb', line 97 def enrich(info, map_keys = {}) info = normalize(info, map_keys) mapper = Hash.new { |hash, key| hash[key] = key }.merge(map_keys) unless (format = info[mapper[:name]]).nil? lib_info = get_info(format) mapper.keys.each do |key| case key when :mimetype info[mapper[key]] = lib_info[:mimetypes].first if lib_info[:mimetypes].first when :puid info[mapper[key]] = lib_info[:puids].first if lib_info[:puids].first when :extension info[mapper[key]] = lib_info[:extensions].first if lib_info[:extensions].first else info[mapper[key]] = lib_info[key] if lib_info[key] end end end info end |
#get_field(format, field) ⇒ Object
57 58 59 |
# File 'lib/libis/format/library.rb', line 57 def get_field(format, field) get_field_by(:name, format, field) end |
#get_field_by(key, value, field) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/libis/format/library.rb', line 61 def get_field_by(key, value, field) info = get_info_by(key, value) return nil unless info case field when :mimetype info[:mimetypes]&.first when :puid info[:puids]&.first when :extension info[:extensions]&.first else info[field] end end |
#get_fields_by(key, value, field) ⇒ Object
76 77 78 |
# File 'lib/libis/format/library.rb', line 76 def get_fields_by(key, value, field) get_infos_by(key, value)&.map { |info| info[field] }.compact end |
#get_info(format) ⇒ Object
80 81 82 |
# File 'lib/libis/format/library.rb', line 80 def get_info(format) get_info_by(:name, format) end |
#get_info_by(key, value) ⇒ Object
84 85 86 |
# File 'lib/libis/format/library.rb', line 84 def get_info_by(key, value) get_infos_by(key, value)&.first end |
#get_infos_by(key, value) ⇒ Object
88 89 90 91 |
# File 'lib/libis/format/library.rb', line 88 def get_infos_by(key, value) result = @implementation.query(key, value) result.map(&:to_hash) end |
#implementation=(impl) ⇒ Object
53 54 55 |
# File 'lib/libis/format/library.rb', line 53 def implementation=(impl) @implementation = impl end |
#known?(key, value) ⇒ Boolean
93 94 95 |
# File 'lib/libis/format/library.rb', line 93 def known?(key, value) !get_info_by(key, value).nil? end |
#normalize(info, map_keys = {}) ⇒ Object
Derive name from the available info
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/libis/format/library.rb', line 119 def normalize(info, map_keys = {}) return {} unless info.is_a? Hash mapper = Hash.new { |hash, key| hash[key] = key }.merge(map_keys) # fill format from looking up by puid unless (puid = info[mapper[:puid]]).blank? info[mapper[:name]] ||= get_field_by(:puid, puid, :name) end # fill format from looking up by mimetype unless (mime = info[mapper[:mimetype]]).blank? info[mapper[:name]] ||= get_field_by(:mimetype, mime, :name) end # finally complete the information from looking up by format name unless (format = info[mapper[:name]]).nil? info[mapper[:mimetype]] = get_field(format, :mimetype) info[mapper[:category]] = get_field(format, :category) end info end |