hydra-file_chracterization Version Build Status Dependency Status

Hydra::FileCharacterization as (extracted from Sufia and Hydra::Derivatives)

Purpose

To provide a wrapper for file characterization

How To Use

If you are using Rails add the following to an initializer (./config/initializers/hydra-file_characterization_config.rb):

Hydra::FileCharacterization.configure do |config|
  config.tool_path(:fits, '/path/to/fits')
end

You can call a single characterizer…

xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits)

…for this particular call, you can specify custom fits path…

xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits) do |config|
  config[:fits] = './really/custom/path/to/fits'
end

…or even make the path callable…

xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits) do |config|
  config[:fits] = lambda {|filename| 

…or even create your custom characterizer on the file…

xml_string = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :my_characterizer) do |config|
  config[:my_characterizer] = lambda {|filename| 

You can also call multiple characterizers at the same time.

fits_xml, ffprobe_xml = Hydra::FileCharacterization.characterize(contents_of_a_file, 'file.rb', :fits, :ffprobe)
  • Why file.read? To highlight that we want a string. In the case of ActiveFedora, we have a StringIO instead of a file.
  • Why file.basename? In the case of Fits, the characterization takes cues from the extension name.

Registering New Characterizers

This is possible by adding a characterizer to the Hydra::FileCharacterization::Characterizers' namespace.