Sha256: b8fb1af4b58e9b426de49eec16469d34f878a0924a0bdd7add2382cd67225896

Contents?: true

Size: 918 Bytes

Versions: 16

Compression:

Stored size: 918 Bytes

Contents

require "active_support/core_ext/module/delegation"

module PgSearch
  module Features
    class DMetaphone
      delegate :conditions, :rank, :to => :'@tsearch'

      # config is temporary as we refactor
      def initialize(query, options, config, model, normalizer)
        dmetaphone_normalizer = Normalizer.new(normalizer)
        options = (options || {}).merge(:dictionary => 'simple')
        @tsearch = TSearch.new(query, options, config, model, dmetaphone_normalizer)
      end

      # Decorates a normalizer with dmetaphone processing.
      class Normalizer
        def initialize(normalizer_to_wrap)
          @decorated_normalizer = normalizer_to_wrap
        end

        def add_normalization(original_sql)
          otherwise_normalized_sql = @decorated_normalizer.add_normalization(original_sql)
          "pg_search_dmetaphone(#{otherwise_normalized_sql})"
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
pg_search-0.2.2 lib/pg_search/features/dmetaphone.rb
pg_search-0.5.1 lib/pg_search/features/dmetaphone.rb
pg_search-0.5 lib/pg_search/features/dmetaphone.rb
pg_search-0.4.2 lib/pg_search/features/dmetaphone.rb
pg_search-0.4.1 lib/pg_search/features/dmetaphone.rb
pg_search-0.2.1 lib/pg_search/features/dmetaphone.rb
pg_search-0.4 lib/pg_search/features/dmetaphone.rb
pg_search-0.3.4 lib/pg_search/features/dmetaphone.rb
pg_search-0.3.3 lib/pg_search/features/dmetaphone.rb
pg_search-0.3.2 lib/pg_search/features/dmetaphone.rb
pg_search-0.3.1 lib/pg_search/features/dmetaphone.rb
pg_search-0.3 lib/pg_search/features/dmetaphone.rb
pg_search-0.2 lib/pg_search/features/dmetaphone.rb
pg_search-0.1.1 lib/pg_search/features/dmetaphone.rb
pg_search-0.1 lib/pg_search/features/dmetaphone.rb
pg_search-0.0.2 lib/pg_search/features/dmetaphone.rb