summaryrefslogtreecommitdiff
path: root/library/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-03-15 10:09:17 +0100
committerLaurenz <laurmaedje@gmail.com>2023-03-15 10:09:17 +0100
commit85678118086b29b3820813411cf382fa283b39f0 (patch)
tree93c27f351515f462c2ebbe294103e2a9391a132e /library/src
parent89f44f220de2972452dd816fe59836ba76953d59 (diff)
Simplify stable id handling
Diffstat (limited to 'library/src')
-rw-r--r--library/src/meta/bibliography.rs8
-rw-r--r--library/src/meta/figure.rs6
-rw-r--r--library/src/meta/heading.rs7
-rw-r--r--library/src/meta/outline.rs2
-rw-r--r--library/src/meta/reference.rs7
5 files changed, 14 insertions, 16 deletions
diff --git a/library/src/meta/bibliography.rs b/library/src/meta/bibliography.rs
index a01f9eee..65bdafb6 100644
--- a/library/src/meta/bibliography.rs
+++ b/library/src/meta/bibliography.rs
@@ -49,7 +49,7 @@ impl BibliographyNode {
/// Find the document's bibliography.
pub fn find(introspector: Tracked<Introspector>) -> StrResult<Self> {
let mut iter = introspector.locate(Selector::node::<Self>()).into_iter();
- let Some((_, node)) = iter.next() else {
+ let Some(node) = iter.next() else {
return Err("the document does not contain a bibliography".into());
};
@@ -65,7 +65,7 @@ impl BibliographyNode {
vt.introspector
.locate(Selector::node::<Self>())
.into_iter()
- .flat_map(|(_, node)| load(vt.world(), &node.to::<Self>().unwrap().path()))
+ .flat_map(|node| load(vt.world(), &node.to::<Self>().unwrap().path()))
.flatten()
.any(|entry| entry.key() == key)
}
@@ -280,9 +280,9 @@ impl Works {
let style = bibliography.style(StyleChain::default());
let citations = vt
.locate_node::<CiteNode>()
- .map(|(id, node)| {
+ .map(|node| {
(
- id,
+ node.0.stable_id().unwrap(),
node.key(),
node.supplement(StyleChain::default()),
node.style(StyleChain::default())
diff --git a/library/src/meta/figure.rs b/library/src/meta/figure.rs
index 4f6ccc00..562e43bb 100644
--- a/library/src/meta/figure.rs
+++ b/library/src/meta/figure.rs
@@ -58,7 +58,7 @@ impl FigureNode {
impl Synthesize for FigureNode {
fn synthesize(&mut self, vt: &Vt, styles: StyleChain) {
- let my_id = self.0.stable_id().unwrap();
+ let my_id = self.0.stable_id();
let element = self.element();
let mut number = None;
@@ -67,8 +67,8 @@ impl Synthesize for FigureNode {
number = NonZeroUsize::new(
1 + vt
.locate_node::<Self>()
- .take_while(|&(id, _)| id != my_id)
- .filter(|(_, figure)| figure.element() == element)
+ .take_while(|figure| figure.0.stable_id() != my_id)
+ .filter(|figure| figure.element() == element)
.count(),
);
}
diff --git a/library/src/meta/heading.rs b/library/src/meta/heading.rs
index 48f6e229..44a940f8 100644
--- a/library/src/meta/heading.rs
+++ b/library/src/meta/heading.rs
@@ -84,14 +84,15 @@ pub struct HeadingNode {
impl Synthesize for HeadingNode {
fn synthesize(&mut self, vt: &Vt, styles: StyleChain) {
- let my_id = self.0.stable_id().unwrap();
+ let my_id = self.0.stable_id();
let numbering = self.numbering(styles);
let mut counter = HeadingCounter::new();
if numbering.is_some() {
// Advance past existing headings.
- for (_, heading) in
- vt.locate_node::<Self>().take_while(|&(id, _)| id != my_id)
+ for heading in vt
+ .locate_node::<Self>()
+ .take_while(|figure| figure.0.stable_id() != my_id)
{
if heading.numbering(StyleChain::default()).is_some() {
counter.advance(heading);
diff --git a/library/src/meta/outline.rs b/library/src/meta/outline.rs
index 7ce0ce1d..216f7a90 100644
--- a/library/src/meta/outline.rs
+++ b/library/src/meta/outline.rs
@@ -77,8 +77,8 @@ impl Synthesize for OutlineNode {
fn synthesize(&mut self, vt: &Vt, _: StyleChain) {
let headings = vt
.locate_node::<HeadingNode>()
- .map(|(_, node)| node.clone())
.filter(|node| node.outlined(StyleChain::default()))
+ .cloned()
.collect();
self.push_headings(headings);
diff --git a/library/src/meta/reference.rs b/library/src/meta/reference.rs
index b4cfa049..e84da56b 100644
--- a/library/src/meta/reference.rs
+++ b/library/src/meta/reference.rs
@@ -68,10 +68,7 @@ impl Show for RefNode {
let target = self.target();
let supplement = self.supplement(styles);
- let matches: Vec<_> = vt
- .locate(Selector::Label(self.target()))
- .map(|(_, node)| node.clone())
- .collect();
+ let matches: Vec<_> = vt.locate(Selector::Label(self.target())).collect();
if !vt.locatable() || BibliographyNode::has(vt, &target.0) {
if !matches.is_empty() {
@@ -87,7 +84,7 @@ impl Show for RefNode {
.spanned(self.span()));
}
- let [target] = matches.as_slice() else {
+ let &[target] = matches.as_slice() else {
if vt.locatable() {
bail!(self.span(), if matches.is_empty() {
"label does not exist in the document"