Skip to content

Commit 4ceb316

Browse files
committed
feat: Allow bulk-adding of snippets, footers, annotations
This will make it easier for diagnostic systems to convert their messages to a `Message`
1 parent c821084 commit 4ceb316

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

src/snippet.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,20 @@ impl<'a> Message<'a> {
3434
self
3535
}
3636

37+
pub fn snippets(mut self, slice: impl IntoIterator<Item = Snippet<'a>>) -> Self {
38+
self.snippets.extend(slice);
39+
self
40+
}
41+
3742
pub fn footer(mut self, footer: Label<'a>) -> Self {
3843
self.footer.push(footer);
3944
self
4045
}
46+
47+
pub fn footers(mut self, footer: impl IntoIterator<Item = Label<'a>>) -> Self {
48+
self.footer.extend(footer);
49+
self
50+
}
4151
}
4252

4353
pub struct Label<'a> {
@@ -116,6 +126,11 @@ impl<'a> Snippet<'a> {
116126
self
117127
}
118128

129+
pub fn annotations(mut self, annotation: impl IntoIterator<Item = Annotation<'a>>) -> Self {
130+
self.annotations.extend(annotation);
131+
self
132+
}
133+
119134
pub fn fold(mut self, fold: bool) -> Self {
120135
self.fold = fold;
121136
self

tests/fixtures/deserialize.rs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,8 @@ impl<'a> From<MessageDef<'a>> for Message<'a> {
4242
if let Some(id) = id {
4343
message = message.id(id);
4444
}
45-
message = snippets
46-
.into_iter()
47-
.fold(message, |message, snippet| message.snippet(snippet));
48-
message = footer
49-
.into_iter()
50-
.fold(message, |message, label| message.footer(label));
45+
message = message.snippets(snippets);
46+
message = message.footers(footer);
5147
message
5248
}
5349
}
@@ -111,11 +107,7 @@ impl<'a> From<SnippetDef<'a>> for Snippet<'a> {
111107
if let Some(origin) = origin {
112108
snippet = snippet.origin(origin)
113109
}
114-
snippet = annotations
115-
.into_iter()
116-
.fold(snippet, |snippet, annotation| {
117-
snippet.annotation(annotation)
118-
});
110+
snippet = snippet.annotations(annotations);
119111
snippet
120112
}
121113
}

0 commit comments

Comments
 (0)