Class: Hydra::Derivatives::Processors::Processor

Inherits:
Object
  • Object
show all
Defined in:
lib/hydra/derivatives/processors/processor.rb

Overview

Processors take a single input and produce a single output

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source_path, directives, opts = {}) ⇒ Processor

Returns a new instance of Processor

Parameters:

  • source_path (String)

    path to the file on disk

  • directives (Hash)

    directions for creating the output

  • opts (Hash) (defaults to: {})
  • [String] (Hash)

    a customizable set of options

  • [#call] (Hash)

    a customizable set of options


12
13
14
15
16
# File 'lib/hydra/derivatives/processors/processor.rb', line 12

def initialize(source_path, directives, opts = {})
  self.source_path = source_path
  self.directives = directives
  self.output_file_service = opts.fetch(:output_file_service, Hydra::Derivatives.output_file_service)
end

Instance Attribute Details

#directivesObject

Returns the value of attribute directives


4
5
6
# File 'lib/hydra/derivatives/processors/processor.rb', line 4

def directives
  @directives
end

#output_file_serviceObject

Returns the value of attribute output_file_service


4
5
6
# File 'lib/hydra/derivatives/processors/processor.rb', line 4

def output_file_service
  @output_file_service
end

#source_pathObject

Returns the value of attribute source_path


4
5
6
# File 'lib/hydra/derivatives/processors/processor.rb', line 4

def source_path
  @source_path
end

Instance Method Details

#output_fileObject

Deprecated.

Please use a PersistOutputFileService class to save an object

Raises:

  • (NotImplementedError)

34
35
36
# File 'lib/hydra/derivatives/processors/processor.rb', line 34

def output_file
  raise NotImplementedError, "Processor is an abstract class. Utilize an implementation of a PersistOutputFileService class in #{self.class.name}"
end

#output_file_id(name) ⇒ Object

This governs the output key sent to the persist file service while this is adequate for storing in Fedora, it's not a great name for saving to the file system.


25
26
27
# File 'lib/hydra/derivatives/processors/processor.rb', line 25

def output_file_id(name)
  [out_prefix, name].join('_')
end

#output_filename_for(_name) ⇒ Object


29
30
31
# File 'lib/hydra/derivatives/processors/processor.rb', line 29

def output_filename_for(_name)
  File.basename(source_path)
end

#processObject


18
19
20
# File 'lib/hydra/derivatives/processors/processor.rb', line 18

def process
  raise "Processor is an abstract class. Implement `process' on #{self.class.name}"
end