- 2001
offset: usize, - 2002
current: &mut Option<(bool, Vec<u8>)>, - 2003
segments: &mut Vec<Segment>, - 2004
wrap: &dyn Fn(bool, Vec<u8>) -> Segment, - 2005
) { - 2006
let Some(list) = self.at.remove(&Spot::InRun { run, child, offset }) else { - 2007
return; - 2008
}; - 2009
if let Some((state, pieces)) = current.take() { - 2010
segments.push(wrap(state, pieces)); - 2011
} - 2012
segments.push(Segment::Inserted(list)); - 2013
} - 2014
- 2015
/// Characters `range` of a `w:t` or `w:delText`, as the element their - 2016
/// state calls for: the original bytes when nothing about it changes. - 2017
fn text_piece( - 2018
&self, - 2019
node: usize, - 2020
chunk: &Chunk, - 2021
range: Range<usize>, - 2022
deleted: bool, - 2023
) -> Vec<u8> { - 2024
let element = &self.part.tree.nodes[node].element; - 2025
let wanted = if deleted { "delText" } else { "t" }; - 2026
if range == (0..chunk.text.len()) && element.local() == wanted { - 2027
return self.part.bytes[self.part.tree.nodes[node].span.clone()].to_vec(); - 2028
} - 2029
let prefix = element - 2030
.name - 2031
.strip_suffix(element.local()) - 2032
.unwrap_or_default(); - 2033
let name = format!("{prefix}{wanted}"); - 2034
let mut attributes: Vec<(String, String)> = element - 2035
.attributes - 2036
.iter() - 2037
.filter(|(key, _)| key != "xml:space") - 2038
.cloned() - 2039
.collect(); - 2040
attributes.push(("xml:space".into(), "preserve".into())); - 2041
let text: String = chunk.text[range].iter().collect(); - 2042
format!( - 2043
"{}{}</{name}>", - 2044
start_tag(&name, &attributes, false), - 2045
escape_text(&text) - 2046
) - 2047
.into_bytes() - 2048
} - 2049
} - 2050
Indexing the workspace…
Vakyartha documentation is discovering safe artifacts, anchors, and source references.