Sha256: 2ecfefda2dba26d2bb0237c1422933e28c212e408fb16ed35e2f40349a45c0d9

Contents?: true

Size: 561 Bytes

Versions: 1

Compression:

Stored size: 561 Bytes

Contents

module Lunar
  # @private Used internally by Lunar::search to get all the fuzzy matches
  # given `nest`, `att` and it's `val`.
  class FuzzyMatches
    attr :nest
    attr :att
    attr :value

    def initialize(nest, att, value)
      @nest, @att, @value = nest, att.to_sym, value
    end

    def distkey
      return if keys.empty?

      nest[{ att => value }.hash].tap do |dk|
        dk.zunionstore keys.flatten
      end
    end

  protected
    def keys
      Words.new(value, false).map { |w| nest[:Fuzzies][att][Lunar.encode(w)] }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lunar-0.5.5 lib/lunar/fuzzy_matches.rb