Sha256: 375547155c58e1e9f07ee467f2ea781f57cec56706ba7c031ddeffbd02f448d7

Contents?: true

Size: 926 Bytes

Versions: 62

Compression:

Stored size: 926 Bytes

Contents

module Workarea
  # TODO: for v4, remove @order, as this can be/is used with other classes.
  class StatusCalculator
    module Status
      extend ActiveSupport::Concern

      included do
        attr_reader :order, :model
      end

      def initialize(model)
        @order = @model = model
      end

      def in_status?
        raise(NotImplementedError, 'a Status must implement the #in_status?')
      end
    end

    attr_reader :calculators, :order, :model

    def initialize(calculators, model)
      @calculators = calculators
      @order = @model = model
    end

    def result
      status = calculators.detect { |c| c.new(@model).in_status? } ||
                calculators.first

      status.name.demodulize.underscore.to_sym
    end

    def results
      calculators
        .select { |c| c.new(@model).in_status? }
        .map { |status| status.name.demodulize.underscore.to_sym }
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-core-3.5.27 app/models/workarea/status_calculator.rb
workarea-core-3.5.26 app/models/workarea/status_calculator.rb
workarea-core-3.4.45 app/models/workarea/status_calculator.rb
workarea-core-3.5.25 app/models/workarea/status_calculator.rb
workarea-core-3.5.23 app/models/workarea/status_calculator.rb
workarea-core-3.4.44 app/models/workarea/status_calculator.rb
workarea-core-3.5.22 app/models/workarea/status_calculator.rb
workarea-core-3.4.43 app/models/workarea/status_calculator.rb
workarea-core-3.5.21 app/models/workarea/status_calculator.rb
workarea-core-3.4.42 app/models/workarea/status_calculator.rb
workarea-core-3.5.20 app/models/workarea/status_calculator.rb
workarea-core-3.4.41 app/models/workarea/status_calculator.rb
workarea-core-3.5.19 app/models/workarea/status_calculator.rb
workarea-core-3.4.40 app/models/workarea/status_calculator.rb
workarea-core-3.5.18 app/models/workarea/status_calculator.rb
workarea-core-3.4.39 app/models/workarea/status_calculator.rb
workarea-core-3.5.17 app/models/workarea/status_calculator.rb
workarea-core-3.4.38 app/models/workarea/status_calculator.rb
workarea-core-3.5.16 app/models/workarea/status_calculator.rb
workarea-core-3.4.37 app/models/workarea/status_calculator.rb