Preserve anchored meta data for all get queries in the pipeline

This commit is contained in:
Andrés N. Robalino 2019-11-03 03:49:06 -05:00
parent f57489ed92
commit 4a0ec1207c
2 changed files with 20 additions and 13 deletions

View File

@ -97,7 +97,7 @@ pub fn get_column_path(
let res = match value {
Ok(fetched) => match fetched {
Some(Tagged { item: v, tag }) => Ok((v.clone()).tagged(&tag)),
Some(Tagged { item: v, .. }) => Ok((v.clone()).tagged(&obj.tag)),
None => match obj {
// If its None check for certain values.
Tagged {
@ -147,8 +147,14 @@ pub fn get(
item: Value::Table(rows),
..
} => {
for item in rows {
result.push_back(ReturnSuccess::value(item.clone()));
for row in rows {
result.push_back(ReturnSuccess::value(
Tagged {
item: row.item,
tag: Tag::from(&item.tag),
}
.map_anchored(&item.tag.anchor),
))
}
}
other => result

View File

@ -105,6 +105,17 @@ impl<T> Tagged<T> {
mapped.tagged(tag)
}
pub fn map_anchored(self, anchor: &Option<AnchorLocation>) -> Tagged<T> {
let mut tag = self.tag;
tag.anchor = anchor.clone();
Tagged {
item: self.item,
tag: tag,
}
}
pub fn tag(&self) -> Tag {
self.tag.clone()
}
@ -418,16 +429,6 @@ impl Span {
self.slice(source).to_string().spanned(*self)
}
/*
pub fn unknown_with_uuid(uuid: Uuid) -> Span {
Span {
start: 0,
end: 0,
source: Some(uuid),
}
}
*/
pub fn start(&self) -> usize {
self.start
}