pub struct Config { /* private fields */ }Expand description
A type used to configure a report
Implementations§
Source§impl Config
impl Config
Sourcepub fn with_cross_gap(self, cross_gap: bool) -> Self
pub fn with_cross_gap(self, cross_gap: bool) -> Self
When label lines cross one-another, should there be a gap?
The alternative to this is to insert crossing characters. However, these interact poorly with label colours.
If unspecified, this defaults to false.
Examples found in repository?
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 Report::build(ReportKind::Error, "stresstest.tao", 13)
7 .with_code(3)
8 .with_message(format!("Incompatible types"))
9 .with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
10 .with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
11 .with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
12 .with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
13 .with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
14 .with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
15 .with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
16 .with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
17 .with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
18 .with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
19 .with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
20 .with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
21 .with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
22 .with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
23 .with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
24 .with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
25 .with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
26 .with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
27 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
28 .with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
29 .with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
30
31 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
32 .with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
33 .with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
34 .with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
35 .with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
36 .with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
37 .with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
38 .with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
39 .with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
40 .with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
41 .with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
42 .with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
43 .with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
44 .with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
45 .with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
46 .with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
47 .with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
48 .with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
49 .with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
50 .with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
51 .with_config(Config::default()
52 .with_cross_gap(false)
53 .with_compact(true)
54 .with_underlines(true)
55 .with_tab_width(4))
56 .finish()
57 .print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
58 .unwrap();
59}Sourcepub fn with_label_attach(self, label_attach: LabelAttach) -> Self
pub fn with_label_attach(self, label_attach: LabelAttach) -> Self
Where should inline labels attach to their spans?
If unspecified, this defaults to LabelAttach::Middle.
Sourcepub fn with_compact(self, compact: bool) -> Self
pub fn with_compact(self, compact: bool) -> Self
Should the report remove gaps to minimise used space?
If unspecified, this defaults to false.
Examples found in repository?
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 Report::build(ReportKind::Error, "stresstest.tao", 13)
7 .with_code(3)
8 .with_message(format!("Incompatible types"))
9 .with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
10 .with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
11 .with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
12 .with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
13 .with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
14 .with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
15 .with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
16 .with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
17 .with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
18 .with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
19 .with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
20 .with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
21 .with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
22 .with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
23 .with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
24 .with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
25 .with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
26 .with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
27 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
28 .with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
29 .with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
30
31 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
32 .with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
33 .with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
34 .with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
35 .with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
36 .with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
37 .with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
38 .with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
39 .with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
40 .with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
41 .with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
42 .with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
43 .with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
44 .with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
45 .with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
46 .with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
47 .with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
48 .with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
49 .with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
50 .with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
51 .with_config(Config::default()
52 .with_cross_gap(false)
53 .with_compact(true)
54 .with_underlines(true)
55 .with_tab_width(4))
56 .finish()
57 .print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
58 .unwrap();
59}Sourcepub fn with_underlines(self, underlines: bool) -> Self
pub fn with_underlines(self, underlines: bool) -> Self
Should underlines be used for label span where possible?
If unspecified, this defaults to true.
Examples found in repository?
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 Report::build(ReportKind::Error, "stresstest.tao", 13)
7 .with_code(3)
8 .with_message(format!("Incompatible types"))
9 .with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
10 .with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
11 .with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
12 .with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
13 .with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
14 .with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
15 .with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
16 .with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
17 .with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
18 .with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
19 .with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
20 .with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
21 .with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
22 .with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
23 .with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
24 .with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
25 .with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
26 .with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
27 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
28 .with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
29 .with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
30
31 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
32 .with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
33 .with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
34 .with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
35 .with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
36 .with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
37 .with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
38 .with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
39 .with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
40 .with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
41 .with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
42 .with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
43 .with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
44 .with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
45 .with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
46 .with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
47 .with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
48 .with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
49 .with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
50 .with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
51 .with_config(Config::default()
52 .with_cross_gap(false)
53 .with_compact(true)
54 .with_underlines(true)
55 .with_tab_width(4))
56 .finish()
57 .print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
58 .unwrap();
59}Sourcepub fn with_multiline_arrows(self, multiline_arrows: bool) -> Self
pub fn with_multiline_arrows(self, multiline_arrows: bool) -> Self
Should arrows be used to point to the bounds of multi-line spans?
If unspecified, this defaults to true.
Sourcepub fn with_color(self, color: bool) -> Self
pub fn with_color(self, color: bool) -> Self
Should colored output should be enabled?
If unspecified, this defaults to true.
Sourcepub fn with_tab_width(self, tab_width: usize) -> Self
pub fn with_tab_width(self, tab_width: usize) -> Self
How many characters width should tab characters be?
If unspecified, this defaults to 4.
Examples found in repository?
3fn main() {
4 let mut colors = ColorGenerator::new();
5
6 Report::build(ReportKind::Error, "stresstest.tao", 13)
7 .with_code(3)
8 .with_message(format!("Incompatible types"))
9 .with_label(Label::new(("stresstest.tao", 0..1)).with_message("Color").with_color(colors.next()))
10 .with_label(Label::new(("stresstest.tao", 1..2)).with_message("Color").with_color(colors.next()))
11 .with_label(Label::new(("stresstest.tao", 2..3)).with_message("Color").with_color(colors.next()))
12 .with_label(Label::new(("stresstest.tao", 3..4)).with_message("Color").with_color(colors.next()))
13 .with_label(Label::new(("stresstest.tao", 4..5)).with_message("Color").with_color(colors.next()))
14 .with_label(Label::new(("stresstest.tao", 5..6)).with_message("Color").with_color(colors.next()))
15 .with_label(Label::new(("stresstest.tao", 6..7)).with_message("Color").with_color(colors.next()))
16 .with_label(Label::new(("stresstest.tao", 7..8)).with_message("Color").with_color(colors.next()))
17 .with_label(Label::new(("stresstest.tao", 8..9)).with_message("Color").with_color(colors.next()))
18 .with_label(Label::new(("stresstest.tao", 9..10)).with_message("Color").with_color(colors.next()))
19 .with_label(Label::new(("stresstest.tao", 10..11)).with_message("Color").with_color(colors.next()))
20 .with_label(Label::new(("stresstest.tao", 11..12)).with_message("Color").with_color(colors.next()))
21 .with_label(Label::new(("stresstest.tao", 12..13)).with_message("Color").with_color(colors.next()))
22 .with_label(Label::new(("stresstest.tao", 13..14)).with_message("Color").with_color(colors.next()))
23 .with_label(Label::new(("stresstest.tao", 14..15)).with_message("Color").with_color(colors.next()))
24 .with_label(Label::new(("stresstest.tao", 15..16)).with_message("Color").with_color(colors.next()))
25 .with_label(Label::new(("stresstest.tao", 16..17)).with_message("Color").with_color(colors.next()))
26 .with_label(Label::new(("stresstest.tao", 17..18)).with_message("Color").with_color(colors.next()))
27 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("Color").with_color(colors.next()))
28 .with_label(Label::new(("stresstest.tao", 19..20)).with_message("Color").with_color(colors.next()))
29 .with_label(Label::new(("stresstest.tao", 20..21)).with_message("Color").with_color(colors.next()))
30
31 .with_label(Label::new(("stresstest.tao", 18..19)).with_message("This is of type Nat").with_color(colors.next()))
32 .with_label(Label::new(("stresstest.tao", 13..16)).with_message("This is of type Str").with_color(colors.next()))
33 .with_label(Label::new(("stresstest.tao", 40..41)).with_message("This is of type Nat").with_color(colors.next()))
34 .with_label(Label::new(("stresstest.tao", 43..47)).with_message("This is of type Bool").with_color(colors.next()))
35 .with_label(Label::new(("stresstest.tao", 49..51)).with_message("This is of type ()").with_color(colors.next()))
36 .with_label(Label::new(("stresstest.tao", 53..55)).with_message("This is of type [_]").with_color(colors.next()))
37 .with_label(Label::new(("stresstest.tao", 25..78)).with_message("This is of type Str").with_color(colors.next()))
38 .with_label(Label::new(("stresstest.tao", 81..124)).with_message("This is of type Nat").with_color(colors.next()))
39 .with_label(Label::new(("stresstest.tao", 100..126)).with_message("This is an inner multi-line").with_color(colors.next()))
40 .with_label(Label::new(("stresstest.tao", 106..120)).with_message("This is another inner multi-line").with_color(colors.next()))
41 .with_label(Label::new(("stresstest.tao", 108..122)).with_message("This is *really* nested multi-line").with_color(colors.next()))
42 .with_label(Label::new(("stresstest.tao", 110..111)).with_message("This is an inline within the nesting!").with_color(colors.next()))
43 .with_label(Label::new(("stresstest.tao", 111..112)).with_message("And another!").with_color(colors.next()))
44 .with_label(Label::new(("stresstest.tao", 103..123)).with_message("This is *really* nested multi-line").with_color(colors.next()))
45 .with_label(Label::new(("stresstest.tao", 105..125)).with_message("This is *really* nested multi-line").with_color(colors.next()))
46 .with_label(Label::new(("stresstest.tao", 112..116)).with_message("This is *really* nested multi-line").with_color(colors.next()))
47 .with_label(Label::new(("stresstest.tao", 26..100)).with_message("Hahaha!").with_color(Color::Fixed(75)))
48 .with_label(Label::new(("stresstest.tao", 85..110)).with_message("Oh god, no more 1").with_color(colors.next()))
49 .with_label(Label::new(("stresstest.tao", 84..114)).with_message("Oh god, no more 2").with_color(colors.next()))
50 .with_label(Label::new(("stresstest.tao", 89..113)).with_message("Oh god, no more 3").with_color(colors.next()))
51 .with_config(Config::default()
52 .with_cross_gap(false)
53 .with_compact(true)
54 .with_underlines(true)
55 .with_tab_width(4))
56 .finish()
57 .print(("stresstest.tao", Source::from(include_str!("stresstest.tao"))))
58 .unwrap();
59}Sourcepub fn with_char_set(self, char_set: CharSet) -> Self
pub fn with_char_set(self, char_set: CharSet) -> Self
What character set should be used to display dynamic elements such as boxes and arrows?
If unspecified, this defaults to CharSet::Unicode.