mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 07:16:05 +02:00
Replace &Span
with Span
since Span
is Copy
(#9770)
# Description `Span` is `Copy`, so we probably should not be passing references of `Span` around. This PR replaces all instances of `&Span` with `Span`, copying spans where necessary. # User-Facing Changes This alters some public functions to take `Span` instead of `&Span` as input. Namely, `EngineState::get_span_contents`, `nu_protocol::extract_value`, a bunch of the math commands, and `Gstat::gstat`.
This commit is contained in:
@ -129,13 +129,13 @@ fn operate(
|
||||
input.map(
|
||||
move |v| {
|
||||
if column_paths.is_empty() {
|
||||
action(&v, fgs_hex, fge_hex, bgs_hex, bge_hex, &head)
|
||||
action(&v, fgs_hex, fge_hex, bgs_hex, bge_hex, head)
|
||||
} else {
|
||||
let mut ret = v;
|
||||
for path in &column_paths {
|
||||
let r = ret.update_cell_path(
|
||||
&path.members,
|
||||
Box::new(move |old| action(old, fgs_hex, fge_hex, bgs_hex, bge_hex, &head)),
|
||||
Box::new(move |old| action(old, fgs_hex, fge_hex, bgs_hex, bge_hex, head)),
|
||||
);
|
||||
if let Err(error) = r {
|
||||
return Value::Error {
|
||||
@ -156,10 +156,11 @@ fn action(
|
||||
fg_end: Option<Rgb>,
|
||||
bg_start: Option<Rgb>,
|
||||
bg_end: Option<Rgb>,
|
||||
command_span: &Span,
|
||||
command_span: Span,
|
||||
) -> Value {
|
||||
match input {
|
||||
Value::String { val, span } => {
|
||||
let span = *span;
|
||||
match (fg_start, fg_end, bg_start, bg_end) {
|
||||
(None, None, None, None) => {
|
||||
// Error - no colors
|
||||
@ -167,7 +168,7 @@ fn action(
|
||||
error: Box::new(ShellError::MissingParameter {
|
||||
param_name:
|
||||
"please supply foreground and/or background color parameters".into(),
|
||||
span: *command_span,
|
||||
span: command_span,
|
||||
}),
|
||||
}
|
||||
}
|
||||
@ -176,27 +177,27 @@ fn action(
|
||||
let bg_start = Rgb::new(0, 0, 0);
|
||||
let gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = gradient.build(val, TargetGround::Background);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(None, None, Some(bg_start), None) => {
|
||||
// Error - missing bg_end, so assume black
|
||||
let bg_end = Rgb::new(0, 0, 0);
|
||||
let gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = gradient.build(val, TargetGround::Background);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(None, None, Some(bg_start), Some(bg_end)) => {
|
||||
// Background Only
|
||||
let gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = gradient.build(val, TargetGround::Background);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(None, Some(fg_end), None, None) => {
|
||||
// Error - missing fg_start, so assume black
|
||||
let fg_start = Rgb::new(0, 0, 0);
|
||||
let gradient = Gradient::new(fg_start, fg_end);
|
||||
let gradient_string = gradient.build(val, TargetGround::Foreground);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(None, Some(fg_end), None, Some(bg_end)) => {
|
||||
// missing fg_start and bg_start, so assume black
|
||||
@ -205,7 +206,7 @@ fn action(
|
||||
let fg_gradient = Gradient::new(fg_start, fg_end);
|
||||
let bg_gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = build_all_gradient_text(val, fg_gradient, bg_gradient);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(None, Some(fg_end), Some(bg_start), None) => {
|
||||
// Error - missing fg_start and bg_end
|
||||
@ -214,7 +215,7 @@ fn action(
|
||||
let fg_gradient = Gradient::new(fg_start, fg_end);
|
||||
let bg_gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = build_all_gradient_text(val, fg_gradient, bg_gradient);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(None, Some(fg_end), Some(bg_start), Some(bg_end)) => {
|
||||
// Error - missing fg_start, so assume black
|
||||
@ -222,14 +223,14 @@ fn action(
|
||||
let fg_gradient = Gradient::new(fg_start, fg_end);
|
||||
let bg_gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = build_all_gradient_text(val, fg_gradient, bg_gradient);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(Some(fg_start), None, None, None) => {
|
||||
// Error - missing fg_end, so assume black
|
||||
let fg_end = Rgb::new(0, 0, 0);
|
||||
let gradient = Gradient::new(fg_start, fg_end);
|
||||
let gradient_string = gradient.build(val, TargetGround::Foreground);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(Some(fg_start), None, None, Some(bg_end)) => {
|
||||
// Error - missing fg_end, bg_start, so assume black
|
||||
@ -238,7 +239,7 @@ fn action(
|
||||
let fg_gradient = Gradient::new(fg_start, fg_end);
|
||||
let bg_gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = build_all_gradient_text(val, fg_gradient, bg_gradient);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(Some(fg_start), None, Some(bg_start), None) => {
|
||||
// Error - missing fg_end, bg_end, so assume black
|
||||
@ -247,7 +248,7 @@ fn action(
|
||||
let fg_gradient = Gradient::new(fg_start, fg_end);
|
||||
let bg_gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = build_all_gradient_text(val, fg_gradient, bg_gradient);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(Some(fg_start), None, Some(bg_start), Some(bg_end)) => {
|
||||
// Error - missing fg_end, so assume black
|
||||
@ -255,13 +256,13 @@ fn action(
|
||||
let fg_gradient = Gradient::new(fg_start, fg_end);
|
||||
let bg_gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = build_all_gradient_text(val, fg_gradient, bg_gradient);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(Some(fg_start), Some(fg_end), None, None) => {
|
||||
// Foreground Only
|
||||
let gradient = Gradient::new(fg_start, fg_end);
|
||||
let gradient_string = gradient.build(val, TargetGround::Foreground);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(Some(fg_start), Some(fg_end), None, Some(bg_end)) => {
|
||||
// Error - missing bg_start, so assume black
|
||||
@ -269,7 +270,7 @@ fn action(
|
||||
let fg_gradient = Gradient::new(fg_start, fg_end);
|
||||
let bg_gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = build_all_gradient_text(val, fg_gradient, bg_gradient);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(Some(fg_start), Some(fg_end), Some(bg_start), None) => {
|
||||
// Error - missing bg_end, so assume black
|
||||
@ -277,14 +278,14 @@ fn action(
|
||||
let fg_gradient = Gradient::new(fg_start, fg_end);
|
||||
let bg_gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = build_all_gradient_text(val, fg_gradient, bg_gradient);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
(Some(fg_start), Some(fg_end), Some(bg_start), Some(bg_end)) => {
|
||||
// Foreground and Background Gradient
|
||||
let fg_gradient = Gradient::new(fg_start, fg_end);
|
||||
let bg_gradient = Gradient::new(bg_start, bg_end);
|
||||
let gradient_string = build_all_gradient_text(val, fg_gradient, bg_gradient);
|
||||
Value::string(gradient_string, *span)
|
||||
Value::string(gradient_string, span)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -294,7 +295,7 @@ fn action(
|
||||
Value::Error {
|
||||
error: Box::new(ShellError::TypeMismatch {
|
||||
err_message: got,
|
||||
span: other.span().unwrap_or(*command_span),
|
||||
span: other.span().unwrap_or(command_span),
|
||||
}),
|
||||
}
|
||||
}
|
||||
@ -326,7 +327,7 @@ mod tests {
|
||||
Some(fg_end),
|
||||
None,
|
||||
None,
|
||||
&Span::test_data(),
|
||||
Span::test_data(),
|
||||
);
|
||||
assert_eq!(actual, expected);
|
||||
}
|
||||
|
@ -98,12 +98,12 @@ fn operate(
|
||||
|
||||
if column_paths.is_empty() {
|
||||
input.map(
|
||||
move |v| process_value(&v, &text, &command_span),
|
||||
move |v| process_value(&v, &text, command_span),
|
||||
engine_state.ctrlc.clone(),
|
||||
)
|
||||
} else {
|
||||
input.map(
|
||||
move |v| process_each_path(v, &column_paths, &text, &command_span),
|
||||
move |v| process_each_path(v, &column_paths, &text, command_span),
|
||||
engine_state.ctrlc.clone(),
|
||||
)
|
||||
}
|
||||
@ -113,7 +113,7 @@ fn process_each_path(
|
||||
mut value: Value,
|
||||
column_paths: &Vec<CellPath>,
|
||||
text: &Option<String>,
|
||||
command_span: &Span,
|
||||
command_span: Span,
|
||||
) -> Value {
|
||||
for path in column_paths {
|
||||
let ret = value.update_cell_path(
|
||||
@ -129,7 +129,7 @@ fn process_each_path(
|
||||
value
|
||||
}
|
||||
|
||||
fn process_value(value: &Value, text: &Option<String>, command_span: &Span) -> Value {
|
||||
fn process_value(value: &Value, text: &Option<String>, command_span: Span) -> Value {
|
||||
match value {
|
||||
Value::String { val, span } => {
|
||||
let text = text.as_deref().unwrap_or(val.as_str());
|
||||
@ -142,7 +142,7 @@ fn process_value(value: &Value, text: &Option<String>, command_span: &Span) -> V
|
||||
Value::Error {
|
||||
error: Box::new(ShellError::TypeMismatch {
|
||||
err_message: got,
|
||||
span: other.span().unwrap_or(*command_span),
|
||||
span: other.span().unwrap_or(command_span),
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user