feat(expr): Make intersects() return the intersection when non-empty #150
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This updates the
intersects()
function in the schema expression language to:null
on empty intersections to ensure thatintersects()
remains falsey.This seems like the simplest resolution for resolving bids-standard/bids-specification#914 along the lines of:
With this change, the rule could be written:
If we require that validators sort the arrays in
dataset.subjects
on load, then we can drop the extrasorted()
calls here.Because we've seen datasets with subjects in the thousands, I've updated this function to create a Set() based on the smaller list. There is very likely a small n where this constitutes a performance regression.