Class: Dusen::Syntax
- Inherits:
-
Object
- Object
- Dusen::Syntax
- Defined in:
- lib/dusen/syntax.rb
Instance Method Summary collapse
- #fields ⇒ Object
-
#initialize ⇒ Syntax
constructor
A new instance of Syntax.
- #learn_field(field, &scoper) ⇒ Object
- #learn_unknown_field(&unknown_scoper) ⇒ Object
- #parse(query) ⇒ Object
- #search(root_scope, query) ⇒ Object
Constructor Details
#initialize ⇒ Syntax
Returns a new instance of Syntax.
6 7 8 |
# File 'lib/dusen/syntax.rb', line 6 def initialize @scopers = {} end |
Instance Method Details
#fields ⇒ Object
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 |