forked from extern/nushell
Additional flags for commands from csv
and from tsv
(#8398)
# Description Resolves issue #8370 Adds the following flags to commands `from csv` and `from tsv`: - `--flexible`: allow the number of fields in records to be variable - `-c --comment`: a comment character to ignore lines starting with it - `-q --quote`: a quote character to ignore separators in strings, defaults to '\"' - `-e --escape`: an escape character for strings containing the quote character Internally, the `Value` struct has an additional helper function `as_char` which converts it to a single `char` # User-Facing Changes The single quoted string `'\t'` can no longer be used as a parameter for the flag `--separator '\t'` as it is interpreted as a two-character string. One needs to use from now on the flag with a double quoted string like so: `-s "\t"` which correctly interprets the string as a single `char`.
This commit is contained in:
@ -190,6 +190,27 @@ impl Clone for Value {
|
||||
}
|
||||
|
||||
impl Value {
|
||||
pub fn as_char(&self) -> Result<char, ShellError> {
|
||||
match self {
|
||||
Value::String { val, span } => {
|
||||
let mut chars = val.chars();
|
||||
match (chars.next(), chars.next()) {
|
||||
(Some(c), None) => Ok(c),
|
||||
_ => Err(ShellError::MissingParameter {
|
||||
param_name: "single character separator".into(),
|
||||
span: *span,
|
||||
}),
|
||||
}
|
||||
}
|
||||
x => Err(ShellError::CantConvert {
|
||||
to_type: "char".into(),
|
||||
from_type: x.get_type().to_string(),
|
||||
span: self.span()?,
|
||||
help: None,
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
/// Converts into string values that can be changed into string natively
|
||||
pub fn as_string(&self) -> Result<String, ShellError> {
|
||||
match self {
|
||||
|
Reference in New Issue
Block a user