Sha256: 508fde0360b5d8a7678df923b579592af356ac594ac092ddb925f5635e55e128

Contents?: true

Size: 1.49 KB

Versions: 10

Compression:

Stored size: 1.49 KB

Contents

module Hyrax
  #
  # Generates CSV from a FileSet
  #
  # @attr_reader [FileSet] file_set file that will be examined to generate the CSVs
  # @attr_reader [Array] terms list of terms that will be output in CSV form
  # @attr_reader [String] multi_value_separator separator for terms that have more than one value
  class FileSetCSVService
    attr_reader :file_set, :terms, :multi_value_separator

    # @param [SolrDocument] file solr document that will be examined to generate the CSVs
    # @param [Array]        terms list of terms that will be output in CSV form
    #                       defaults if nil to list below
    # @param [String]       multi_value_separator separator for terms that have more than one value
    #                       defaults to '|'
    def initialize(file, terms = nil, multi_value_separator = '|')
      @file_set = file
      @terms = terms
      @terms ||= [:id, :title, :depositor, :creator, :visibility, :resource_type, :rights, :file_format]
      @multi_value_separator = multi_value_separator
    end

    # provide csv version of the GenericFile
    def csv
      ::CSV.generate do |csv|
        csv << terms.map do |term|
          values = file_set.send(term)
          values = values.respond_to?(:to_a) ? values.to_a : [values] # make sure we have an array
          values.join(multi_value_separator)
        end
      end
    end

    # provide csv header line for a GenericFile
    def csv_header
      ::CSV.generate do |csv|
        csv << terms
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
hyrax-1.1.1 app/services/hyrax/file_set_csv_service.rb
hyrax-1.1.0 app/services/hyrax/file_set_csv_service.rb
hyrax-1.0.5 app/services/hyrax/file_set_csv_service.rb
hyrax-1.0.4 app/services/hyrax/file_set_csv_service.rb
hyrax-1.0.3 app/services/hyrax/file_set_csv_service.rb
hyrax-1.0.2 app/services/hyrax/file_set_csv_service.rb
hyrax-1.0.1 app/services/hyrax/file_set_csv_service.rb
hyrax-1.0.0.rc2 app/services/hyrax/file_set_csv_service.rb
hyrax-1.0.0.rc1 app/services/hyrax/file_set_csv_service.rb
test_hyrax-0.0.1.alpha app/services/hyrax/file_set_csv_service.rb