Sha256: fd2d6d622f1d31845543b6ea0851fa95daddba8308e115a4025f7bf4f1a704ce

Contents?: true

Size: 1.49 KB

Versions: 27

Compression:

Stored size: 1.49 KB

Contents

module Picky

  module Query

    # Combinations represent an ordered list of Combination s.
    #
    # Combinations contain methods for calculating score (including
    # the boost) and ids for each of its Combination s.
    #    
    # They are the core of an Allocation.
    # An Allocation consists of a number of Combinations.
    #
    class Combinations

      attr_reader :combinations

      delegate :empty?,
               :inject,
               :to => :@combinations

      def initialize combinations = []
        @combinations = combinations
      end

      # Sums up the weights of the combinations.
      #
      # Note: Optimized sum(&:weight) away – ~3% improvement.
      #
      def score
        @combinations.inject(0) { |total, combination| total + combination.weight }
      end
      def boost_for weights
        weights.boost_for @combinations
      end

      # Filters the tokens and categories such that categories
      # that are passed in, are removed.
      #
      # Note: This method is not totally independent of the calculate_ids one.
      # Since identifiers are only nullified, we need to not include the
      # ids that have an associated identifier that is nil.
      #
      def remove categories = []
        @combinations.reject! { |combination| categories.include?(combination.category) }
      end

      #
      #
      def to_result
        @combinations.map &:to_result
      end

      #
      #
      def to_s
        @combinations.to_s
      end

    end

  end

end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
picky-4.12.1 lib/picky/query/combinations.rb
picky-4.12.0 lib/picky/query/combinations.rb
picky-4.11.3 lib/picky/query/combinations.rb
picky-4.11.2 lib/picky/query/combinations.rb
picky-4.11.1 lib/picky/query/combinations.rb
picky-4.11.0 lib/picky/query/combinations.rb
picky-4.10.0 lib/picky/query/combinations.rb
picky-4.9.0 lib/picky/query/combinations.rb
picky-4.8.1 lib/picky/query/combinations.rb
picky-4.8.0 lib/picky/query/combinations.rb
picky-4.7.0 lib/picky/query/combinations.rb
picky-4.6.6 lib/picky/query/combinations.rb
picky-4.6.5 lib/picky/query/combinations.rb
picky-4.6.4 lib/picky/query/combinations.rb
picky-4.6.3 lib/picky/query/combinations.rb
picky-4.6.2 lib/picky/query/combinations.rb
picky-4.6.1 lib/picky/query/combinations.rb
picky-4.6.0 lib/picky/query/combinations.rb
picky-4.5.12 lib/picky/query/combinations.rb
picky-4.5.11 lib/picky/query/combinations.rb