Module annotate_snippets::formatter::style [] [src]

Set of structures required to implement a stylesheet for DisplayListFormatter.

In order to provide additional styling information for the formatter, a structs can implement Stylesheet and Style traits.

Example:

use annotate_snippets::formatter::style::{Stylesheet, StyleClass, Style};

struct HTMLStyle {
  prefix: String,
  postfix: String,
};

impl HTMLStyle {
  fn new(prefix: &str, postfix: &str) -> Self {
    HTMLStyle {
      prefix: prefix.into(),
      postfix: postfix.into()
    }
  }
};

impl Style for HTMLStyle {
  fn paint(&self, text: &str) -> String {
    format!("{}{}{}", self.prefix, text, self.postfix)
  }

  fn bold(&self) -> Box<Style> {
    Box::new(HTMLStyle {
      prefix: format!("{}<b>", self.prefix),
      postfix: format!("</b>{}", self.postfix),
    })
  }
}

struct HTMLStylesheet {};


impl Stylesheet for HTMLStylesheet {
  fn get_style(&self, class: StyleClass) -> Box<Style> {
    let s = match class {
      StyleClass::Error => HTMLStyle::new("<span style='color:red'>", "</span>"),
      StyleClass::Warning => HTMLStyle::new("<span style='color:orange'>", "</span>"),
      StyleClass::Info => HTMLStyle::new("<span style='color:yellow'>", "</span>"),
      StyleClass::Note => HTMLStyle::new("<span style='color:blue'>", "</span>"),
      StyleClass::Help => HTMLStyle::new("<span style='color:green'>", "</span>"),
      StyleClass::LineNo => HTMLStyle::new("<strong>", "</strong>"),
      StyleClass::Emphasis => HTMLStyle::new("<i>", "</i>"),
      StyleClass::None => HTMLStyle::new("", ""),
    };
    Box::new(s)
  }
}

Enums

StyleClass

StyleClass is a collection of named variants of style classes that DisplayListFormatter uses.

Traits

Style

This trait implements a return value for the Stylesheet::get_style.

Stylesheet

Trait to annotate structs that can provide Style implementations for every StyleClass variant.