@@ -277,7 +277,15 @@ const defaultMethods = {
277
277
} ,
278
278
deterministic : ( data , buildState ) => isDeterministic ( data , buildState . engine , buildState ) ,
279
279
compile : ( data , buildState ) => {
280
- if ( ! buildState . engine . truthy [ OriginalImpl ] ) return false
280
+ if ( ! buildState . engine . truthy [ OriginalImpl ] ) {
281
+ let res = buildState . compile ``
282
+ if ( Array . isArray ( data ) && data . length ) {
283
+ for ( let i = 0 ; i < data . length ; i ++ ) res = buildState . compile `${ res } engine.truthy(prev = ${ data [ i ] } ) ? prev : `
284
+ res = buildState . compile `${ res } prev`
285
+ return res
286
+ }
287
+ return false
288
+ }
281
289
if ( Array . isArray ( data ) && data . length ) return `(${ data . map ( ( i ) => buildString ( i , buildState ) ) . join ( ' || ' ) } )`
282
290
return `(${ buildString ( data , buildState ) } ).reduce((a,b) => a||b, false)`
283
291
} ,
@@ -314,7 +322,15 @@ const defaultMethods = {
314
322
traverse : false ,
315
323
deterministic : ( data , buildState ) => isDeterministic ( data , buildState . engine , buildState ) ,
316
324
compile : ( data , buildState ) => {
317
- if ( ! buildState . engine . truthy [ OriginalImpl ] ) return false
325
+ if ( ! buildState . engine . truthy [ OriginalImpl ] ) {
326
+ let res = buildState . compile ``
327
+ if ( Array . isArray ( data ) && data . length ) {
328
+ for ( let i = 0 ; i < data . length ; i ++ ) res = buildState . compile `${ res } !engine.truthy(prev = ${ data [ i ] } ) ? prev : `
329
+ res = buildState . compile `${ res } prev`
330
+ return res
331
+ }
332
+ return false
333
+ }
318
334
if ( Array . isArray ( data ) && data . length ) return `(${ data . map ( ( i ) => buildString ( i , buildState ) ) . join ( ' && ' ) } )`
319
335
return `(${ buildString ( data , buildState ) } ).reduce((a,b) => a&&b, true)`
320
336
}
0 commit comments