Sha256: 6320475dc32505443479eacc0fd7d388b0a385302efef0f571ef537aebde1d93
Contents?: true
Size: 909 Bytes
Versions: 1
Compression:
Stored size: 909 Bytes
Contents
module Dusen class Parser WESTERNISH_WORD_CHARACTER = '\\w\\-\\.@_ÄÖÜäöüß' # this is wrong on so many levels TEXT_QUERY = /(?:"([^"]+)"|([#{WESTERNISH_WORD_CHARACTER}]+))/ FIELD_QUERY = /(\w+)\:#{TEXT_QUERY}/ def self.parse(query_string) query_string = query_string.dup # we are going to delete substrings in-place query = Query.new extract_field_query_atoms(query_string, query) extract_text_query_atoms(query_string, query) query end def self.extract_text_query_atoms(query_string, query) while query_string.sub!(TEXT_QUERY, '') value = "#{$1}#{$2}" query << Atom.new(value) end end def self.extract_field_query_atoms(query_string, query) while query_string.sub!(FIELD_QUERY, '') field = $1 value = "#{$2}#{$3}" query << Atom.new(field, value) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dusen-0.1.0 | lib/dusen/parser.rb |