mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 04:45:04 +02:00
Table operating commands. (#1686)
* Table operating commands. * Updated merge test for clarity. * More clarity. * Better like this..
This commit is contained in:
committed by
GitHub
parent
d834708be8
commit
cf53264438
@ -4,7 +4,7 @@ use crate::value::{UntaggedValue, Value};
|
||||
use derive_new::new;
|
||||
use getset::Getters;
|
||||
use indexmap::IndexMap;
|
||||
use nu_source::{b, DebugDocBuilder, PrettyDebug, Spanned, Tag};
|
||||
use nu_source::{b, DebugDocBuilder, PrettyDebug, Spanned, SpannedItem, Tag};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::cmp::{Ord, Ordering, PartialOrd};
|
||||
use std::hash::{Hash, Hasher};
|
||||
@ -125,6 +125,25 @@ impl Dictionary {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn merge_from(&self, other: &Dictionary) -> Dictionary {
|
||||
let mut obj = self.clone();
|
||||
|
||||
for column in other.keys() {
|
||||
let key = column.clone();
|
||||
let value_key = key.as_str();
|
||||
let value_spanned_key = value_key.spanned_unknown();
|
||||
|
||||
let other_column = match other.get_data_by_key(value_spanned_key) {
|
||||
Some(value) => value,
|
||||
None => UntaggedValue::Primitive(Primitive::Nothing).into_untagged_value(),
|
||||
};
|
||||
|
||||
obj.entries.insert(key, other_column);
|
||||
}
|
||||
|
||||
obj
|
||||
}
|
||||
|
||||
/// Iterate the keys in the Dictionary
|
||||
pub fn keys(&self) -> impl Iterator<Item = &String> {
|
||||
self.entries.keys()
|
||||
|
Reference in New Issue
Block a user