diff options
Diffstat (limited to 'vendor/annotate-snippets/src/formatter/style.rs')
-rw-r--r-- | vendor/annotate-snippets/src/formatter/style.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/vendor/annotate-snippets/src/formatter/style.rs b/vendor/annotate-snippets/src/formatter/style.rs new file mode 100644 index 000000000..3fc01c191 --- /dev/null +++ b/vendor/annotate-snippets/src/formatter/style.rs @@ -0,0 +1,51 @@ +//! Set of structures required to implement a stylesheet +//! +//! In order to provide additional styling information for the +//! formatter, a structs can implement `Stylesheet` and `Style` +//! traits. +//! +use std::fmt; + +/// StyleClass is a collection of named variants of style classes +pub enum StyleClass { + /// Message indicating an error. + Error, + /// Message indicating a warning. + Warning, + /// Message indicating an information. + Info, + /// Message indicating a note. + Note, + /// Message indicating a help. + Help, + + /// Style for line numbers. + LineNo, + + /// Parts of the text that are to be emphasised. + Emphasis, + + /// Parts of the text that are regular. Usually a no-op. + None, +} + +/// This trait implements a return value for the `Stylesheet::get_style`. +pub trait Style { + /// The method used to write text with formatter + fn paint(&self, text: &str, f: &mut fmt::Formatter<'_>) -> fmt::Result; + /// The method used to write display function with formatter + fn paint_fn<'a>( + &self, + c: Box<dyn FnOnce(&mut fmt::Formatter<'_>) -> fmt::Result + 'a>, + f: &mut fmt::Formatter<'_>, + ) -> fmt::Result; + /// The method used by the `Formatter` to display the message in bold font. + fn bold(&self) -> Box<dyn Style>; +} + +/// Trait to annotate structs that can provide `Style` implementations for +/// every `StyleClass` variant. +pub trait Stylesheet { + /// Returns a `Style` implementer based on the requested `StyleClass` variant. + fn get_style(&self, class: StyleClass) -> Box<dyn Style>; +} |