lib/wax_tasks/asset.rb
# frozen_string_literal: true
#
module WaxTasks
Derivative = Struct.new(:path, :label, :img)
#
class Asset
attr_reader :id, :path
def initialize(path, pid, variants)
@path = path
@pid = pid
@id = asset_id
@variants = variants
end
#
#
def asset_id
id = File.basename @path, '.*'
id.prepend "#{@pid}_" unless id == @pid
id
end
#
#
def simple_derivatives
@variants.map do |label, width|
img = MiniMagick::Image.open @path
if width > img.width
warn Rainbow("Tried to create derivative #{width}px wide, but asset #{@id} for item #{@pid} only has a width of #{img.width}px.").yellow
else
img.resize width
end
img.format 'jpg'
Derivative.new("#{@id}/#{label}.jpg", label, img)
end
end
#
#
def to_iiif_image_record(is_only, index, base_opts)
opts = base_opts.clone
opts[:is_primary] = index.zero?
opts[:section_label] = "Page #{index + 1}" unless is_only
opts[:path] = @path
opts[:manifest_id] = @pid
opts[:id] = @id
opts[:variants] = @variants
WaxIiif::ImageRecord.new(opts)
end
end
end