Class: Dusen::Parser
- Inherits:
-
Object
- Object
- Dusen::Parser
- Defined in:
- lib/dusen/parser.rb
Constant Summary collapse
- TEXT_QUERY =
/(?:(\-)?"([^"]+)"|(\-)?([\S]+))/
- FIELD_QUERY =
/(\-)?(\w+)\:#{TEXT_QUERY}/
Class Method Summary collapse
- .extract_field_query_tokens(query_string, query) ⇒ Object
- .extract_text_query_tokens(query_string, query) ⇒ Object
- .parse(query_string) ⇒ Object
Class Method Details
.extract_field_query_tokens(query_string, query) ⇒ Object
26 27 28 29 30 31 32 33 34 |
# File 'lib/dusen/parser.rb', line 26 def self.extract_field_query_tokens(query_string, query) while query_string.sub!(FIELD_QUERY, '') field = $2 value = "#{$4}#{$6}" exclude = "#{$1}" == "-" = { :field => field, :value => value, :exclude => exclude } query << Token.new() end end |
.extract_text_query_tokens(query_string, query) ⇒ Object
17 18 19 20 21 22 23 24 |
# File 'lib/dusen/parser.rb', line 17 def self.extract_text_query_tokens(query_string, query) while query_string.sub!(TEXT_QUERY, '') value = "#{$2}#{$4}" exclude = "#{$1}#{$3}" == "-" = { :field => 'text', :value => value, :exclude => exclude } query << Token.new() end end |
.parse(query_string) ⇒ Object
9 10 11 12 13 14 15 |
# File 'lib/dusen/parser.rb', line 9 def self.parse(query_string) query_string = query_string.dup # we are going to delete substrings in-place query = Query.new extract_field_query_tokens(query_string, query) extract_text_query_tokens(query_string, query) query end |