Sha256: a928980c237ca19832c6cc63901e8fd82d799dce08e615610ea0bd2cc9b4bb65

Contents?: true

Size: 1.07 KB

Versions: 6

Compression:

Stored size: 1.07 KB

Contents

# Copyright (C) 2006  Mauricio Fernandez <mfp@acm.org>
#

require 'ftsearch/analysis/whitespace_analyzer'

module FTSearch
class FieldInfos
  DEFAULT_OPTIONS = {
    :default_analyzer => FTSearch::Analysis::WhiteSpaceAnalyzer.new,
    :stored => true,
  }
  def initialize(options = {})
    options = DEFAULT_OPTIONS.merge(options)
    @fields = {}
    @default_options = options
  end

  def add_field(options = {})
    options = @default_options.merge(options)
    raise "Need a name" unless options[:name]
    store_field_info(options)
  end

  def [](field_name)
    if field_info = @fields[field_name]
      field_info
    else
      store_field_info(:name => field_name)
    end
  end

  private
  def store_field_info(options)
    options = @default_options.merge(options)
    unless options[:analyzer]
      if klass = options[:analyzer_class]
        options[:analyzer] = klass.new
      else
        options[:analyzer] = @default_options[:default_analyzer]
      end
    end
    @fields[options[:name]] = options
  end
end
end  # FTSearch

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
shoesgem-0.1480.0 shoes/ruby/lib/ftsearch/field_infos.rb
shoesgem-0.1469.0 shoes/ruby/lib/ftsearch/field_infos.rb
shoesgem-0.1430.0 shoes/ruby/lib/ftsearch/field_infos.rb
shoesgem-0.1429.0 shoes/ruby/lib/ftsearch/field_infos.rb
shoesgem-0.1428.0 shoes/ruby/lib/ftsearch/field_infos.rb
shoesgem-0.1426.0 shoes/ruby/lib/ftsearch/field_infos.rb