Replace row conditions with closures in commands #7428
Merged
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.
Description
This PR changes some commands that previously accepted row conditions (like
$it > 5
) as parameter to accept closures instead. The reasons are:a) The commands would need to move into parser keywords in the future while they feel more like commands to be implemented in Nushell code as a part of standard library.
b) In scripts, it is useful to store the predicate condition in a variable which you can't do with row conditions.
c) These commands are not used that often to benefit enough from the shorter row condition syntax
User-Facing Changes
The following commands now accept closure instead of a row condition:
take until
take while
skip until
skip while
any
all
This is a part of an effort to move away from shape-directed parsing. Related PR: #7365
Tests + Formatting
Don't forget to add tests that cover your changes.
Make sure you've run and fixed any issues with these commands:
cargo fmt --all -- --check
to check standard code formatting (cargo fmt --all
applies these changes)cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect
to check that you're using the standard code stylecargo test --workspace
to check that all tests passAfter Submitting
If your PR had any user-facing changes, update the documentation after the PR is merged, if necessary. This will help us keep the docs up to date.