Method: RbPath::Query#parse_string_query

Defined in:
lib/rbpath/query.rb

#parse_string_query(query) ⇒ Object

Parsing rules:

  • query keys are seperated by spaces, keys with spaces must be single quoted

  • brackets group keys into an NOR group

  • parens group keys into a OR group

  • valid keys names consist of [chars|nums|spaces|-|_|.], anything else can be used as a seperator inside the parens/brackets



17
18
19
20
21
22
23
# File 'lib/rbpath/query.rb', line 17

def parse_string_query(query)
  query.scan(/(\([^\)]+\)|\[[^\]]+\]|'[^']+'|[^\s]+)/)
       .flatten
       .map { |keys| { multi: /\*\*/ === keys[0..1],
                       neg:  /[\[\*]/ === keys[0],
                       keys: keys.scan(/[\w\d\s\-\_\.]+/) }}
end