diff options
Diffstat (limited to '')
-rw-r--r-- | vendor/annotate-snippets-0.8.0/src/snippet.rs | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/vendor/annotate-snippets-0.8.0/src/snippet.rs b/vendor/annotate-snippets-0.8.0/src/snippet.rs new file mode 100644 index 000000000..bc7ba0099 --- /dev/null +++ b/vendor/annotate-snippets-0.8.0/src/snippet.rs @@ -0,0 +1,88 @@ +//! Structures used as an input for the library. +//! +//! Example: +//! +//! ``` +//! use annotate_snippets::snippet::*; +//! +//! Snippet { +//! title: Some(Annotation { +//! label: Some("mismatched types"), +//! id: None, +//! annotation_type: AnnotationType::Error, +//! }), +//! footer: vec![], +//! slices: vec![ +//! Slice { +//! source: "Foo", +//! line_start: 51, +//! origin: Some("src/format.rs"), +//! fold: false, +//! annotations: vec![], +//! }, +//! Slice { +//! source: "Faa", +//! line_start: 129, +//! origin: Some("src/display.rs"), +//! fold: false, +//! annotations: vec![], +//! }, +//! ], +//! opt: Default::default(), +//! }; +//! ``` +use crate::display_list::FormatOptions; + +/// Primary structure provided for formatting +#[derive(Debug, Default)] +pub struct Snippet<'a> { + pub title: Option<Annotation<'a>>, + pub footer: Vec<Annotation<'a>>, + pub slices: Vec<Slice<'a>>, + pub opt: FormatOptions, +} + +/// Structure containing the slice of text to be annotated and +/// basic information about the location of the slice. +/// +/// One `Slice` is meant to represent a single, continuous, +/// slice of source code that you want to annotate. +#[derive(Debug)] +pub struct Slice<'a> { + pub source: &'a str, + pub line_start: usize, + pub origin: Option<&'a str>, + pub annotations: Vec<SourceAnnotation<'a>>, + /// If set explicitly to `true`, the snippet will fold + /// parts of the slice that don't contain any annotations. + pub fold: bool, +} + +/// Types of annotations. +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum AnnotationType { + /// Error annotations are displayed using red color and "^" character. + Error, + /// Warning annotations are displayed using blue color and "-" character. + Warning, + Info, + Note, + Help, +} + +/// An annotation for a `Slice`. +#[derive(Debug)] +pub struct SourceAnnotation<'a> { + pub range: (usize, usize), + pub label: &'a str, + pub annotation_type: AnnotationType, +} + +/// An annotation for a `Snippet`. +#[derive(Debug)] +pub struct Annotation<'a> { + /// Identifier of the annotation. Usually error code like "E0308". + pub id: Option<&'a str>, + pub label: Option<&'a str>, + pub annotation_type: AnnotationType, +} |