Sha256: 6491d21195555c08f343d5b95f138418b6e820b9a73d3b72878afc4fa48a9845

Contents?: true

Size: 1.03 KB

Versions: 5

Compression:

Stored size: 1.03 KB

Contents

class QuickClassificationQuery
  CURATION_CONCERNS_TO_TRY = ['article', 'dataset', 'image']

  def self.each_for_context(*args, &block)
    new(*args).all.each(&block)
  end

  attr_reader :user

  def initialize(user, options = {})
    @user = user
    @concern_name_normalizer = options.fetch(:concern_name_normalizer, ClassifyConcern.method(:normalize_concern_name))
    @registered_curation_concern_names = options.fetch(:registered_curation_concern_names, Curate.configuration.registered_curation_concern_types)
    @curation_concern_names_to_try = options.fetch(:curation_concern_names_to_try, CURATION_CONCERNS_TO_TRY)
  end

  def all
    (registered_curation_concern_names & normalized_curation_concern_names).sort.collect(&:constantize).select {|klass| user.can?(:create, klass)}
  end

  private
  attr_reader :concern_name_normalizer, :registered_curation_concern_names, :curation_concern_names_to_try
  def normalized_curation_concern_names
    curation_concern_names_to_try.collect{|name| concern_name_normalizer.call(name) }
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
curate-0.6.6 app/models/quick_classification_query.rb
curate-0.6.5 app/models/quick_classification_query.rb
curate-0.6.4 app/models/quick_classification_query.rb
curate-0.6.3 app/models/quick_classification_query.rb
curate-0.6.1 app/models/quick_classification_query.rb