@@ -142,11 +142,15 @@ function removeNodeFromTree(ast: AST, node: NodeTerm): AST {
142
142
/**
143
143
* Merge a query with a filter.
144
144
*/
145
- export function concatenate ( query : string , filter : string , condition = 'AND' ) : string {
145
+ export function concatenate ( query : string , filter : string , operator ?: 'AND' | 'OR ') : string {
146
146
if ( ! filter ) {
147
147
return query ;
148
148
}
149
- return query . trim ( ) === '' ? filter : `${ query } ${ condition } ${ filter } ` ;
149
+ if ( query . trim ( ) === '' ) {
150
+ return filter ;
151
+ }
152
+
153
+ return operator ? `${ query } ${ operator } ${ filter } ` : `${ query } ${ filter } `
150
154
}
151
155
152
156
export class LuceneQuery {
@@ -185,14 +189,17 @@ export class LuceneQuery {
185
189
return this . findFilter ( key , value , modifier ) !== null ;
186
190
}
187
191
188
- addFilter ( key : string , value : string , modifier : ModifierType = '' ) {
192
+ addFilter ( key : string , value : string , modifier : ModifierType = '' , parens = false ) {
189
193
if ( this . hasFilter ( key , value , modifier ) ) {
190
194
return this ;
191
195
}
192
196
193
197
key = escapeFilter ( key ) ;
194
198
value = escapeFilterValue ( value ) ;
195
- const filter = `${ modifier } ${ key } :"${ value } "` ;
199
+ let filter = `${ modifier } ${ key } :"${ value } "` ;
200
+ if ( parens ) {
201
+ filter = `(${ filter } )`
202
+ }
196
203
197
204
return LuceneQuery . parse ( concatenate ( this . toString ( ) , filter ) ) ;
198
205
}
0 commit comments