module Shrine::Plugins::AddMetadata::InstanceMethods

Public Instance Methods

extract_metadata(io, **options) click to toggle source
Calls superclass method
# File lib/shrine/plugins/add_metadata.rb, line 32
def extract_metadata(io, **options)
  metadata = super

  extract_custom_metadata(io, **options, metadata: metadata)

  metadata
end

Private Instance Methods

extract_custom_metadata(io, **options) click to toggle source
# File lib/shrine/plugins/add_metadata.rb, line 42
def extract_custom_metadata(io, **options)
  opts[:add_metadata][:definitions].each do |name, definition_options, block|
    result = instance_exec(io, **options, &block)

    if result.nil? && definition_options[:skip_nil]
      # Do not store this metadata
    elsif name
      options[:metadata].merge! name.to_s => result
    else
      options[:metadata].merge! result.transform_keys(&:to_s) if result
    end

    # rewind between metadata blocks
    io.rewind
  end
end