mirror of https://github.com/zkat/miette.git
Add `and_label(s)`
This commit is contained in:
parent
4148552cf0
commit
b65872011c
|
|
@ -206,10 +206,61 @@ impl MietteDiagnostic {
|
||||||
/// assert_eq!(diag.message, "Typos in 'hello world'");
|
/// assert_eq!(diag.message, "Typos in 'hello world'");
|
||||||
/// assert_eq!(diag.labels, Some(labels));
|
/// assert_eq!(diag.labels, Some(labels));
|
||||||
/// ```
|
/// ```
|
||||||
pub fn with_labels(self, labels: Vec<LabeledSpan>) -> Self {
|
pub fn with_labels(self, labels: impl IntoIterator<Item = LabeledSpan>) -> Self {
|
||||||
|
Self {
|
||||||
|
labels: Some(labels.into_iter().collect()),
|
||||||
|
..self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Return new diagnostic with new label added to the existing ones.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
/// ```
|
||||||
|
/// use miette::{Diagnostic, LabeledSpan, MietteDiagnostic};
|
||||||
|
///
|
||||||
|
/// let source = "helo wrld";
|
||||||
|
///
|
||||||
|
/// let label1 = LabeledSpan::at_offset(3, "add 'l'");
|
||||||
|
/// let label2 = LabeledSpan::at_offset(6, "add 'r'");
|
||||||
|
/// let diag = MietteDiagnostic::new("Typos in 'hello world'")
|
||||||
|
/// .and_label(label1.clone())
|
||||||
|
/// .and_label(label2.clone());
|
||||||
|
/// assert_eq!(diag.message, "Typos in 'hello world'");
|
||||||
|
/// assert_eq!(diag.labels, Some(vec![label1, label2]));
|
||||||
|
/// ```
|
||||||
|
pub fn and_label(self, label: impl Into<LabeledSpan>) -> Self {
|
||||||
|
let mut labels = self.labels.unwrap_or_default();
|
||||||
|
labels.push(label.into());
|
||||||
Self {
|
Self {
|
||||||
labels: Some(labels),
|
labels: Some(labels),
|
||||||
..self
|
..self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return new diagnostic with new labels added to the existing ones.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
/// ```
|
||||||
|
/// use miette::{Diagnostic, LabeledSpan, MietteDiagnostic};
|
||||||
|
///
|
||||||
|
/// let source = "helo wrld";
|
||||||
|
///
|
||||||
|
/// let label1 = LabeledSpan::at_offset(3, "add 'l'");
|
||||||
|
/// let label2 = LabeledSpan::at_offset(6, "add 'r'");
|
||||||
|
/// let label3 = LabeledSpan::at_offset(9, "add '!'");
|
||||||
|
/// let diag = MietteDiagnostic::new("Typos in 'hello world!'")
|
||||||
|
/// .and_label(label1.clone())
|
||||||
|
/// .and_labels([label2.clone(), label3.clone()]);
|
||||||
|
/// assert_eq!(diag.message, "Typos in 'hello world!'");
|
||||||
|
/// assert_eq!(diag.labels, Some(vec![label1, label2, label3]));
|
||||||
|
/// ```
|
||||||
|
pub fn and_labels(self, labels: impl IntoIterator<Item = LabeledSpan>) -> Self {
|
||||||
|
let mut all_labels = self.labels.unwrap_or_default();
|
||||||
|
all_labels.extend(labels.into_iter());
|
||||||
|
Self {
|
||||||
|
labels: Some(all_labels),
|
||||||
|
..self
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue