Skip to content

Commit 0d1364d

Browse files
authored
Merge pull request #94 from epage/builder
fix!: Clarify Snippet API
2 parents 666b2b9 + 9cdd503 commit 0d1364d

23 files changed

+404
-381
lines changed

benches/simple.rs

+13-6
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ extern crate criterion;
44

55
use criterion::{black_box, Criterion};
66

7-
use annotate_snippets::{Label, Renderer, Slice, Snippet};
7+
use annotate_snippets::{Level, Renderer, Snippet};
88

99
fn create_snippet(renderer: Renderer) {
1010
let source = r#") -> Option<String> {
@@ -29,16 +29,23 @@ fn create_snippet(renderer: Renderer) {
2929
_ => continue,
3030
}
3131
}"#;
32-
let snippet = Snippet::error("mismatched types").id("E0308").slice(
33-
Slice::new(source, 51)
32+
let message = Level::Error.title("mismatched types").id("E0308").snippet(
33+
Snippet::source(source)
34+
.line_start(51)
3435
.origin("src/format.rs")
3536
.annotation(
36-
Label::warning("expected `Option<String>` because of return type").span(5..19),
37+
Level::Warning
38+
.span(5..19)
39+
.label("expected `Option<String>` because of return type"),
3740
)
38-
.annotation(Label::error("expected enum `std::option::Option`").span(26..724)),
41+
.annotation(
42+
Level::Error
43+
.span(26..724)
44+
.label("expected enum `std::option::Option`"),
45+
),
3946
);
4047

41-
let _result = renderer.render(snippet).to_string();
48+
let _result = renderer.render(message).to_string();
4249
}
4350

4451
pub fn criterion_benchmark(c: &mut Criterion) {

examples/expected_type.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
use annotate_snippets::{Label, Renderer, Slice, Snippet};
1+
use annotate_snippets::{Level, Renderer, Snippet};
22

33
fn main() {
44
let source = r#" annotations: vec![SourceAnnotation {
55
label: "expected struct `annotate_snippets::snippet::Slice`, found reference"
66
,
77
range: <22, 25>,"#;
8-
let snippet = Snippet::error("expected type, found `22`").slice(
9-
Slice::new(source, 26)
8+
let message = Level::Error.title("expected type, found `22`").snippet(
9+
Snippet::source(source)
10+
.line_start(26)
1011
.origin("examples/footer.rs")
1112
.fold(true)
1213
.annotation(
13-
Label::error(
14-
"expected struct `annotate_snippets::snippet::Slice`, found reference",
15-
)
16-
.span(193..195),
14+
Level::Error
15+
.span(193..195)
16+
.label("expected struct `annotate_snippets::snippet::Slice`, found reference"),
1717
)
18-
.annotation(Label::info("while parsing this struct").span(34..50)),
18+
.annotation(Level::Info.span(34..50).label("while parsing this struct")),
1919
);
2020

2121
let renderer = Renderer::styled();
22-
anstream::println!("{}", renderer.render(snippet));
22+
anstream::println!("{}", renderer.render(message));
2323
}

examples/footer.rs

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
use annotate_snippets::{Label, Renderer, Slice, Snippet};
1+
use annotate_snippets::{Label, Level, Renderer, Snippet};
22

33
fn main() {
4-
let snippet = Snippet::error("mismatched types")
5-
.id("E0308")
6-
.slice(
7-
Slice::new(" slices: vec![\"A\",", 13)
8-
.origin("src/multislice.rs")
9-
.annotation(
10-
Label::error(
4+
let message =
5+
Level::Error
6+
.title("mismatched types")
7+
.id("E0308")
8+
.snippet(
9+
Snippet::source(" slices: vec![\"A\",")
10+
.line_start(13)
11+
.origin("src/multislice.rs")
12+
.annotation(Level::Error.span(21..24).label(
1113
"expected struct `annotate_snippets::snippet::Slice`, found reference",
12-
)
13-
.span(21..24),
14-
),
15-
)
16-
.footer(Label::note(
17-
"expected type: `snippet::Annotation`\n found type: `__&__snippet::Annotation`",
18-
));
14+
)),
15+
)
16+
.footer(Label::note(
17+
"expected type: `snippet::Annotation`\n found type: `__&__snippet::Annotation`",
18+
));
1919

2020
let renderer = Renderer::styled();
21-
anstream::println!("{}", renderer.render(snippet));
21+
anstream::println!("{}", renderer.render(message));
2222
}

examples/format.rs

+13-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use annotate_snippets::{Label, Renderer, Slice, Snippet};
1+
use annotate_snippets::{Level, Renderer, Snippet};
22

33
fn main() {
44
let source = r#") -> Option<String> {
@@ -23,15 +23,22 @@ fn main() {
2323
_ => continue,
2424
}
2525
}"#;
26-
let snippet = Snippet::error("mismatched types").id("E0308").slice(
27-
Slice::new(source, 51)
26+
let message = Level::Error.title("mismatched types").id("E0308").snippet(
27+
Snippet::source(source)
28+
.line_start(51)
2829
.origin("src/format.rs")
2930
.annotation(
30-
Label::warning("expected `Option<String>` because of return type").span(5..19),
31+
Level::Warning
32+
.span(5..19)
33+
.label("expected `Option<String>` because of return type"),
3134
)
32-
.annotation(Label::error("expected enum `std::option::Option`").span(26..724)),
35+
.annotation(
36+
Level::Error
37+
.span(26..724)
38+
.label("expected enum `std::option::Option`"),
39+
),
3340
);
3441

3542
let renderer = Renderer::styled();
36-
anstream::println!("{}", renderer.render(snippet));
43+
anstream::println!("{}", renderer.render(message));
3744
}

examples/multislice.rs

+14-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
1-
use annotate_snippets::{Renderer, Slice, Snippet};
1+
use annotate_snippets::{Level, Renderer, Snippet};
22

33
fn main() {
4-
let snippet = Snippet::error("mismatched types")
5-
.slice(Slice::new("Foo", 51).origin("src/format.rs"))
6-
.slice(Slice::new("Faa", 129).origin("src/display.rs"));
4+
let message = Level::Error
5+
.title("mismatched types")
6+
.snippet(
7+
Snippet::source("Foo")
8+
.line_start(51)
9+
.origin("src/format.rs"),
10+
)
11+
.snippet(
12+
Snippet::source("Faa")
13+
.line_start(129)
14+
.origin("src/display.rs"),
15+
);
716

817
let renderer = Renderer::styled();
9-
anstream::println!("{}", renderer.render(snippet));
18+
anstream::println!("{}", renderer.render(message));
1019
}

src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
//! The crate uses a three stage process with two conversions between states:
1717
//!
1818
//! ```text
19-
//! Snippet --> Renderer --> impl Display
19+
//! Message --> Renderer --> impl Display
2020
//! ```
2121
//!
22-
//! The input type - [Snippet] is a structure designed
22+
//! The input type - [Message] is a structure designed
2323
//! to align with likely output from any parser whose code snippet is to be
2424
//! annotated.
2525
//!

0 commit comments

Comments
 (0)