@@ -5,12 +5,12 @@ const REGEX_CHAR = '*'
55const RANGE_CHAR = '~'
66const GROUP_START = '('
77const GROUP_END = ')'
8- const QUOTES = '"'
9- const EMPTY_QUOTES_STR = '""'
8+ const VAL_TOKEN = '"'
9+ const EMPTY_VAL_GROUP = ` ${ VAL_TOKEN } ${ VAL_TOKEN } `
1010const KEY_SEPARATOR = '.'
1111const NEGATED_PREFIX = 'not'
1212const RANGE_REGEXP = / ^ [ ^ - \d ] * ( - ? \d + ( \. \d + ) ? ) ? [ ^ - \d ] * - [ ^ - \d ] * ( - ? \d + ( \. \d + ) ? ) ? [ ^ - \d ] * $ /
13- const TOKENIZER = new RegExp ( ` *(${ NEGATED_PREFIX } )? *(\\${ GROUP_START } )| *(${ NEGATED_PREFIX } +)?(?:((?:\\\\.|[^ ${ GROUP_START } ${ GROUP_END } \\\\${ REGEX_CHAR } ${ RANGE_CHAR } ${ TOKEN_SEPARATOR } ])+) *([${ REGEX_CHAR } ${ RANGE_CHAR } ]?${ TOKEN_SEPARATOR } ))? *(${ QUOTES } ((?:\\\\.|[^${ QUOTES } \\\\])+)${ QUOTES } ?|(?:\\\\.|[^ ${ GROUP_START } ${ GROUP_END } \\\\])+)? *(and|or|\\${ GROUP_END } |$)` , 'g' )
13+ const TOKENIZER = new RegExp ( ` *(${ NEGATED_PREFIX } )? *(\\${ GROUP_START } )| *(${ NEGATED_PREFIX } +)?(?:((?:\\\\.|[^ ${ GROUP_START } ${ GROUP_END } \\\\${ REGEX_CHAR } ${ RANGE_CHAR } ${ TOKEN_SEPARATOR } ])+) *([${ REGEX_CHAR } ${ RANGE_CHAR } ]?${ TOKEN_SEPARATOR } ))? *(${ VAL_TOKEN } ((?:\\\\.|[^${ VAL_TOKEN } \\\\])+)${ VAL_TOKEN } ?|(?:\\\\.|[^ ${ GROUP_START } ${ GROUP_END } \\\\])+)? *(and|or|\\${ GROUP_END } |$)` , 'g' )
1414const TOKEN = { GROUP_NEGATED : 1 , GROUP_START : 2 , NEGATED : 3 , KEY : 4 , TYPE : 5 , VALUE : 6 , QUOTED_VALUE : 7 , OPERATOR : 8 }
1515const UNKNOWN = - 1
1616const EMPTY_STR = ''
@@ -208,9 +208,9 @@ function extractConditionsFromQuery(query: string, regex = new RegExp(TOKENIZER)
208208 let value = m [ TOKEN . QUOTED_VALUE ] || void 0
209209
210210 if ( key === void 0 ) {
211- key = value !== void 0 ? KEY_SEPARATOR : m [ TOKEN . VALUE ]
211+ key = value !== void 0 ? KEY_SEPARATOR : getUnquotedValue ( m [ TOKEN . VALUE ] )
212212 } else if ( value === void 0 ) {
213- value = m [ TOKEN . VALUE ] !== EMPTY_QUOTES_STR ? m [ TOKEN . VALUE ] : void 0
213+ value = getUnquotedValue ( m [ TOKEN . VALUE ] )
214214 }
215215
216216 if ( key || value ) {
@@ -317,6 +317,10 @@ function removeEscapeChar(str?: string): string | void {
317317 return str ? str . replace ( / \\ ( .) / g, '$1' ) : str
318318}
319319
320+ function getUnquotedValue ( value : string ) : string {
321+ return value !== EMPTY_VAL_GROUP && value !== VAL_TOKEN ? value : void 0
322+ }
323+
320324export default SearchEngine
321325
322326module && ( module . exports = SearchEngine )
0 commit comments