Class: WaxTasks::IiifCollection
- Inherits:
-
Collection
- Object
- Collection
- WaxTasks::IiifCollection
- Defined in:
- lib/wax_tasks/iiif_collection.rb
Overview
A Jekyll collection with IIIF configuration + data
Instance Attribute Summary collapse
-
#iiif_config ⇒ Hash
the iiif configuration for the collection.
-
#meta ⇒ Array
metadata k,v rules.
-
#src_data ⇒ String
the path to the data source file.
-
#src_dir ⇒ String
path to existing iiif source images.
-
#target_dir ⇒ String
target path for iiif derivatives.
-
#variants ⇒ Hash
image variants to generate e.g.
Attributes inherited from Collection
#config, #name, #page_dir, #site
Instance Method Summary collapse
-
#iiif_builder ⇒ Object
Creates a IiifS3::Builder object from collection config.
-
#iiif_record(src_img, metadata) ⇒ Object
Creates an individual IiifS3 ImageRecord with metadata from source data file if available.
-
#iiif_records ⇒ Array
Creates an array of IIIfS3 ImageRecords from the collection config for the IiifS3 Builder to process.
-
#initialize(name, site) ⇒ IiifCollection
constructor
Creates a new IiifCollection with name @name given site config @site.
-
#process ⇒ Nil
Main method for generating iiif derivatives and json.
-
#validated_variants ⇒ Hash
Gets custom image variants from collection config if available Else returns default variants { med: 600, lg: 1140 } to Builder.
Methods inherited from Collection
#collection_config, #ingest_file, inherited
Constructor Details
#initialize(name, site) ⇒ IiifCollection
Creates a new IiifCollection with name @name given site config @site
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/wax_tasks/iiif_collection.rb', line 16 def initialize(name, site) super(name, site) @src_data = @config.fetch('source', nil) @iiif_config = @config.fetch('iiif', {}) @meta = @iiif_config.fetch('meta', nil) @variants = validated_variants @src_dir = Utils.make_path(@site[:source_dir], '_data/iiif', @name) @target_dir = Utils.make_path(@site[:source_dir], 'iiif', @name) end |
Instance Attribute Details
#iiif_config ⇒ Hash
the iiif configuration for the collection
12 13 14 |
# File 'lib/wax_tasks/iiif_collection.rb', line 12 def iiif_config @iiif_config end |
#meta ⇒ Array
metadata k,v rules
12 13 14 |
# File 'lib/wax_tasks/iiif_collection.rb', line 12 def @meta end |
#src_data ⇒ String
the path to the data source file
12 13 14 |
# File 'lib/wax_tasks/iiif_collection.rb', line 12 def src_data @src_data end |
#src_dir ⇒ String
path to existing iiif source images
12 13 14 |
# File 'lib/wax_tasks/iiif_collection.rb', line 12 def src_dir @src_dir end |
#target_dir ⇒ String
target path for iiif derivatives
12 13 14 |
# File 'lib/wax_tasks/iiif_collection.rb', line 12 def target_dir @target_dir end |
#variants ⇒ Hash
image variants to generate e.g. { med: 650 }
12 13 14 |
# File 'lib/wax_tasks/iiif_collection.rb', line 12 def variants @variants end |
Instance Method Details
#iiif_builder ⇒ Object
Creates a IiifS3::Builder object from collection config
43 44 45 46 47 48 49 50 51 |
# File 'lib/wax_tasks/iiif_collection.rb', line 43 def iiif_builder build_opts = { base_url: "#{@site[:baseurl]}/iiif/#{@name}", output_dir: @target_dir, verbose: true, variants: @variants } IiifS3::Builder.new(build_opts) end |
#iiif_record(src_img, metadata) ⇒ Object
Creates an individual IiifS3 ImageRecord with metadata from source data file if available
93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/wax_tasks/iiif_collection.rb', line 93 def iiif_record(src_img, ) basename = File.basename(src_img, '.*').to_s record_opts = { id: basename, path: src_img, label: basename } if src_item = .find { |i| i['pid'].to_s == basename } @meta.each do |i| record_opts[i.first[0].to_sym] = src_item.fetch(i.first[1], '') end end IiifS3::ImageRecord.new(record_opts) end |
#iiif_records ⇒ Array
Creates an array of IIIfS3 ImageRecords from the collection config for the IiifS3 Builder to process
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/wax_tasks/iiif_collection.rb', line 74 def iiif_records records = [] source_images = Dir["#{@src_dir}/*"].sort! if @meta && @src_data src_path = Utils.make_path(@site[:source_dir], '_data', @src_data) = ingest_file(src_path) else = false end source_images.each { |src_img| records << iiif_record(src_img, ) } records end |
#process ⇒ Nil
Main method for generating iiif derivatives and json
33 34 35 36 37 38 39 |
# File 'lib/wax_tasks/iiif_collection.rb', line 33 def process raise Error::MissingIiifSrc, "Cannot find IIIF source directory #{@src_dir}" unless Dir.exist?(@src_dir) FileUtils.mkdir_p(@target_dir, verbose: false) builder = iiif_builder builder.load(iiif_records) builder.process_data(true) end |
#validated_variants ⇒ Hash
Gets custom image variants from collection config if available Else returns default variants { med: 600, lg: 1140 } to Builder
57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/wax_tasks/iiif_collection.rb', line 57 def validated_variants vars = @iiif_config.fetch('variants', false) if vars.is_a?(Array) && vars.all? { |v| v.is_a?(Integer) } variants = {} vars.each_with_index do |v, i| variants["custom_variant_#{i}".to_sym] = v end else variants = { med: 600, lg: 1140 } end variants end |