Class: ParadeDB::Index::TokenizerParser

Inherits:
Object
  • Object
show all
Defined in:
lib/parade_db/index.rb

Constant Summary collapse

TOKENIZER_EXPRESSION =
/\A[a-zA-Z_][a-zA-Z0-9_]*(?:(?:::|\.)[a-zA-Z_][a-zA-Z0-9_]*)*(?:\(\s*[a-zA-Z0-9_'".,=\s:-]*\s*\))?\z/.freeze
TOKENIZER_SINGLE_KEYS =
%i[tokenizer alias].freeze

Class Method Summary collapse

Class Method Details

.parse(source_name, tokenizer, context:) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/parade_db/index.rb', line 55

def parse(source_name, tokenizer, context:)
  unless tokenizer.is_a?(Tokenizer)
    raise InvalidIndexDefinition, "#{context} for #{source_name.inspect} must be a Tokenizer"
  end

  options = {}
  options[:__positional] = tokenizer.positional_args.dup unless tokenizer.positional_args.nil?
  tokenizer.options&.each { |key, value| options[key.to_sym] = value }

  key = options[:alias]&.to_s || source_name
  DefinitionCompiler::Entry.new(
    source: source_name,
    expression: expression?(source_name),
    tokenizer: tokenizer.name,
    options: options,
    query_key: key
  )
end