Fix 907 and improve substring

This commit is contained in:
Jonathan Turner 2019-11-03 07:49:28 +13:00
parent 51879d022e
commit f589d3c795
2 changed files with 10 additions and 15 deletions

View File

@ -10,7 +10,6 @@ pub struct Get;
#[derive(Deserialize)]
pub struct GetArgs {
member: ColumnPath,
rest: Vec<ColumnPath>,
}
impl WholeStreamCommand for Get {
@ -118,13 +117,10 @@ pub fn get_column_path(
}
pub fn get(
GetArgs {
member,
rest: fields,
}: GetArgs,
GetArgs { member }: GetArgs,
RunnableContext { input, .. }: RunnableContext,
) -> Result<OutputStream, ShellError> {
trace!("get {:?} {:?}", member, fields);
trace!("get {:?}", member);
let stream = input
.values
@ -133,12 +129,7 @@ pub fn get(
let member = vec![member.clone()];
let column_paths = vec![&member, &fields]
.into_iter()
.flatten()
.collect::<Vec<&ColumnPath>>();
for path in column_paths {
for path in member {
let res = get_column_path(&path, &item);
match res {

View File

@ -41,9 +41,13 @@ impl Str {
if start > input.len() - 1 {
Value::string("")
} else {
// Index operator isn't perfect:
// https://users.rust-lang.org/t/how-to-get-a-substring-of-a-string/1351
Value::string(&input[start..end])
Value::string(
&input
.chars()
.skip(start)
.take(end - start)
.collect::<String>(),
)
}
}
Some(Action::ToInteger) => match input.trim() {