Class: Dusen::Syntax

Inherits:
Object
  • Object
show all
Defined in:
lib/dusen/syntax.rb

Instance Method Summary collapse

Constructor Details

#initializeSyntax

Returns a new instance of Syntax.



6
7
8
# File 'lib/dusen/syntax.rb', line 6

def initialize
  @scopers = {}
end

Instance Method Details

#fieldsObject



31
32
33
# File 'lib/dusen/syntax.rb', line 31

def fields
  @scopers
end

#learn_field(field, &scoper) ⇒ Object



10
11
12
13
# File 'lib/dusen/syntax.rb', line 10

def learn_field(field, &scoper)
  field = field.to_s
  @scopers[field] = scoper
end

#learn_unknown_field(&unknown_scoper) ⇒ Object



15
16
17
# File 'lib/dusen/syntax.rb', line 15

def learn_unknown_field(&unknown_scoper)
  @unknown_scoper = unknown_scoper
end

#parse(query) ⇒ Object



35
36
37
# File 'lib/dusen/syntax.rb', line 35

def parse(query)
  Parser.parse(query)
end

#search(root_scope, query) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/dusen/syntax.rb', line 19

def search(root_scope, query)
  query = parse(query) if query.is_a?(String)
  query = query.condensed
  matches = find_parsed_query(root_scope, query.include)
  if query.exclude.any?
    inverted_exclude_scope = build_exclude_scope(root_scope, query.exclude)
    matches.merge(inverted_exclude_scope)
  else
    matches
  end
end