ListStream touchup (#12524)

# Description

Does some misc changes to `ListStream`:
- Moves it into its own module/file separate from `RawStream`.
- `ListStream`s now have an associated `Span`.
- This required changes to `ListStreamInfo` in `nu-plugin`. Note sure if
this is a breaking change for the plugin protocol.
- Hides the internals of `ListStream` but also adds a few more methods.
- This includes two functions to more easily alter a stream (these take
a `ListStream` and return a `ListStream` instead of having to go through
the whole `into_pipeline_data(..)` route).
  -  `map`: takes a `FnMut(Value) -> Value`
  - `modify`: takes a function to modify the inner stream.
This commit is contained in:
Ian Manske
2024-05-05 16:00:59 +00:00
committed by GitHub
parent 3143ded374
commit e879d4ecaf
106 changed files with 957 additions and 874 deletions

View File

@ -30,17 +30,17 @@ impl Command for SubCommand {
call: &Call,
_input: PipelineData,
) -> Result<PipelineData, ShellError> {
let span = call.head;
let head = call.head;
Ok(TZ_VARIANTS
.iter()
.map(move |x| {
Value::record(
record! { "timezone" => Value::string(x.name(), span) },
span,
record! { "timezone" => Value::string(x.name(), head) },
head,
)
})
.into_pipeline_data(engine_state.ctrlc.clone()))
.into_pipeline_data(head, engine_state.ctrlc.clone()))
}
fn examples(&self) -> Vec<Example> {