lib/picky/query/combination.rb in picky-2.7.0 vs lib/picky/query/combination.rb in picky-3.0.0.pre1

- old
+ new

@@ -1,76 +1,80 @@ -module Query +module Picky - # Describes the combination of a token (the text) and - # the index (the bundle): [text, index_bundle] - # - # A combination is a single part of an allocation: - # [..., [text2, index_bundle2], ...] - # - # An allocation consists of a number of combinations: - # [[text1, index_bundle1], [text2, index_bundle2], [text3, index_bundle1]] - # - class Combination # :nodoc:all + module Query - attr_reader :token, :bundle, :category_name - - def initialize token, category - @token = token - @category_name = category.name - @bundle = category.bundle_for token - @text = @token.text # don't want to use reset_similar already - end - - # Note: Required for uniq! + # Describes the combination of a token (the text) and + # the index (the bundle): [text, index_bundle] # - def hash - [@token.to_s, @bundle].hash - end - - # Returns the weight of this combination. + # A combination is a single part of an allocation: + # [..., [text2, index_bundle2], ...] # - # Note: Caching is most of the time useful. + # An allocation consists of a number of combinations: + # [[text1, index_bundle1], [text2, index_bundle2], [text3, index_bundle1]] # - def weight - @weight ||= @bundle.weight(@text) - end - - # Returns an array of ids for the given text. - # - # Note: Caching is most of the time useful. - # - def ids - @ids ||= @bundle.ids(@text) - end - - # The identifier for this combination. - # - def identifier - "#{bundle.identifier}:#{@token.identifier}" - end - - # Is the identifier in the given identifiers? - # - def in? identifiers - identifiers.include? identifier - end + class Combination # :nodoc:all - # Combines the category names with the original names. - # [ - # [:title, 'Flarbl', :flarbl], - # [:category, 'Gnorf', :gnorf] - # ] - # - def to_result - [@category_name, *@token.to_result] + attr_reader :token, :bundle, :category_name + + def initialize token, category + @token = token + @category_name = category.name + @bundle = category.bundle_for token + @text = @token.text # don't want to use reset_similar already + end + + # Note: Required for uniq! + # + def hash + [@token.to_s, @bundle].hash + end + + # Returns the weight of this combination. + # + # Note: Caching is most of the time useful. + # + def weight + @weight ||= @bundle.weight(@text) + end + + # Returns an array of ids for the given text. + # + # Note: Caching is most of the time useful. + # + def ids + @ids ||= @bundle.ids(@text) + end + + # The identifier for this combination. + # + def identifier + "#{bundle.identifier}:#{@token.identifier}" + end + + # Is the identifier in the given identifiers? + # + def in? identifiers + identifiers.include? identifier + end + + # Combines the category names with the original names. + # [ + # [:title, 'Flarbl', :flarbl], + # [:category, 'Gnorf', :gnorf] + # ] + # + def to_result + [@category_name, *@token.to_result] + end + + # Example: + # "exact title:Peter*:peter" + # + def to_s + "#{bundle.identifier} #{to_result.join(':')}" + end + end - - # Example: - # "exact title:Peter*:peter" - # - def to_s - "#{bundle.identifier} #{to_result.join(':')}" - end - + end end \ No newline at end of file