28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/libis/format/yaml_loader.rb', line 28
def load_formats(file_or_hash)
hash = file_or_hash.is_a?(Hash) ? file_or_hash : YAML::load_file(file_or_hash)
hash.each do |category, format_list|
format_list.each do |format_name, format_info|
format_info.symbolize_keys!
format_name = format_name.to_sym
new_info = Libis::Format::Info.new(
name: format_name,
category: category.to_sym,
description: format_info[:NAME],
puids: format_info[:PUID]&.strip&.split(/[\s,]+/)&.map { |v| v.strip } || [],
mimetypes: format_info[:MIME]&.strip&.split(/[\s,]+/)&.map(&:strip) || [],
extensions: format_info[:EXTENSIONS]&.strip&.split(/[\s,]+/)&.map { |v| v.strip } || []
)
if (old_info = database[format_name])
new_info = Libis::Format::Info.new(
name: format_name,
category: category.to_sym,
description: new_info.description.blank? ? old_info.description : new_info.description,
puids: (old_info.puids + new_info.puids).uniq,
mimetypes: (old_info.mimetypes + new_info.mimetypes).uniq,
extensions: (old_info.extensions + new_info.extensions).uniq
)
end
database[format_name] = new_info
end
end
end
|