lib/emojidex/data/collection/asset_information.rb
require 'digest/md5'
require_relative '../../defaults'
module Emojidex
module Data
# Asset Information for Collections
module CollectionAssetInformation
def generate_checksums(formats = Emojidex::Defaults.formats,
sizes = Emojidex::Defaults.sizes)
@emoji.values.each do |moji|
moji.checksums = get_checksums(moji, formats, sizes)
moji.combinations.each do |combo|
combo.checksums = get_combo_checksums(moji, combo, formats, sizes)
end
moji.customizations.each do |combo|
combo.checksums = get_combo_checksums(moji, combo, formats, sizes)
end
end
end
def get_checksums(moji, formats = Emojidex::Defaults.formats,
sizes = Emojidex::Defaults.sizes)
sums = {}
sums[:svg] = _checksum_for_file("#{@vector_source_path}/#{moji.code}.svg") if formats.include? :svg
if formats.include? :png
sums[:png] = {}
sizes.keys.each do |size|
sums[:png][size] = _checksum_for_file("#{@raster_source_path}/#{size}/#{moji.code}.png")
end
end
sums
end
def get_combo_checksums(moji, combo, formats = Emojidex::Defaults.formats,
sizes = Emojidex::Defaults.sizes)
sums = combo.generate_blank_entry_set
if formats.include? :svg
for i in 0..(combo.components.length - 1)
combo.components[i].each do |component|
next if component == ''
sums[i][component][:svg] = _checksum_for_file("#{@vector_source_path}/#{combo.base}/#{i}/#{component}.svg")
end
end
end
if formats.include? :png
sizes.keys.each do |size|
for i in 0..(combo.components.length - 1)
combo.components[i].each do |component|
next if component == ''
sums[i][component][:png][size] = _checksum_for_file("#{@raster_source_path}/#{size}/#{combo.base}/#{i}/#{component}.png")
end
end
end
end
sums
end
def generate_paths(formats = Emojidex::Defaults.formats, sizes = Emojidex::Defaults.sizes)
@emoji.values.each do |moji|
moji.paths = get_paths(moji, formats, sizes)
moji.combinations.each do |combo|
combo.paths = get_combo_paths(moji, combo, formats, sizes)
end
end
end
def get_paths?(moji, formats = Emojidex::Defaults.formats, sizes = Emojidex::Defaults.sizes)
paths = {}
path = "#{@vector_source_path}/#{moji.code}.svg"
paths[:svg] = path if File.exist? path
if formats.include? :png
paths[:png] = {}
sizes.keys.each do |size|
path = "#{@raster_source_path}/#{size}/#{moji.code}.png"
paths[:png][size] = path if File.exist? path
end
end
paths
end
def get_paths(moji, formats = Emojidex::Defaults.formats,
sizes = Emojidex::Defaults.sizes)
paths = {}
paths[:svg] = "#{@vector_source_path}/#{moji.code}.svg"
if formats.include? :png
paths[:png] = {}
sizes.keys.each do |size|
paths[:png][size] = "#{@raster_source_path}/#{size}/#{moji.code}.png"
end
end
paths
end
def get_combo_paths(moji, combo, formats = Emojidex::Defaults.formats,
sizes = Emojidex::Defaults.sizes)
paths = combo.generate_blank_path_set
paths[:svg] = "#{@vector_source_path}/#{moji.code}"
if formats.include? :png
sizes.keys.each do |size|
paths[:png][size] = "#{@raster_source_path}/#{size}/#{moji.code}"
end
end
paths
end
private
def _checksum_for_file(path)
sum = nil
if File.exist? path
sum = Digest::MD5.file(path).hexdigest
end
sum
end
end
end
end