This commit is contained in:
Stefan Holderbach 2024-08-01 11:02:24 +02:00 committed by GitHub
commit 01b837d239
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -42,14 +42,38 @@ impl Command for ToNuon {
call: &Call, call: &Call,
input: PipelineData, input: PipelineData,
) -> Result<PipelineData, ShellError> { ) -> Result<PipelineData, ShellError> {
let style = if call.has_flag(engine_state, stack, "raw")? { let raw_flag = call.has_flag(engine_state, stack, "raw")?;
nuon::ToStyle::Raw let tabs_flag = call.get_flag(engine_state, stack, "tabs")?;
} else if let Some(t) = call.get_flag(engine_state, stack, "tabs")? { let indent_flag = call.get_flag(engine_state, stack, "indent")?;
nuon::ToStyle::Tabs(t) let style = match (raw_flag, tabs_flag, indent_flag) {
} else if let Some(i) = call.get_flag(engine_state, stack, "indent")? { (true, None, None) => nuon::ToStyle::Raw,
nuon::ToStyle::Spaces(i) (false, None, None) => nuon::ToStyle::Raw,
} else { (false, None, Some(indent)) => nuon::ToStyle::Spaces(indent),
nuon::ToStyle::Raw (false, Some(n_tabs), None) => nuon::ToStyle::Tabs(n_tabs),
(true, None, Some(_)) => {
return Err(ShellError::IncompatibleParameters {
left_message: "can't use `--indent` at the same time".into(),
left_span: call.get_named_arg("indent").expect("has flag").span,
right_message: "because of `--raw`".into(),
right_span: call.get_named_arg("raw").expect("has flag").span,
});
}
(true, Some(_), _) => {
return Err(ShellError::IncompatibleParameters {
left_message: "can't use `--tabs` at the same time".into(),
left_span: call.get_named_arg("tabs").expect("has flag").span,
right_message: "because of `--raw`".into(),
right_span: call.get_named_arg("raw").expect("has flag").span,
});
}
(false, Some(_), Some(_)) => {
return Err(ShellError::IncompatibleParameters {
left_message: "can't use `--indent` at the same time".into(),
left_span: call.get_named_arg("indent").expect("has flag").span,
right_message: "because of `--tabs`".into(),
right_span: call.get_named_arg("tabs").expect("has flag").span,
});
}
}; };
let span = call.head; let span = call.head;
@ -84,11 +108,6 @@ impl Command for ToNuon {
example: "[1 2 3] | to nuon --indent 2", example: "[1 2 3] | to nuon --indent 2",
result: Some(Value::test_string("[\n 1,\n 2,\n 3\n]")), result: Some(Value::test_string("[\n 1,\n 2,\n 3\n]")),
}, },
Example {
description: "Overwrite any set option with --raw",
example: "[1 2 3] | to nuon --indent 2 --raw",
result: Some(Value::test_string("[1, 2, 3]"))
},
Example { Example {
description: "A more complex record with multiple data types", description: "A more complex record with multiple data types",
example: "{date: 2000-01-01, data: [1 [2 3] 4.56]} | to nuon --indent 2", example: "{date: 2000-01-01, data: [1 [2 3] 4.56]} | to nuon --indent 2",