File: mod.rs

package info (click to toggle)
rust-codespan-reporting 0.11.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 688 kB
  • sloc: makefile: 2
file content (31 lines) | stat: -rw-r--r-- 964 bytes parent folder | download | duplicates (35)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use codespan_reporting::diagnostic::Diagnostic;
use codespan_reporting::files::Files;
use codespan_reporting::term::{emit, Config};
use termcolor::{Buffer, WriteColor};

mod color_buffer;

use self::color_buffer::ColorBuffer;

pub struct TestData<'files, F: Files<'files>> {
    pub files: F,
    pub diagnostics: Vec<Diagnostic<F::FileId>>,
}

impl<'files, F: Files<'files>> TestData<'files, F> {
    fn emit<W: WriteColor>(&'files self, mut writer: W, config: &Config) -> W {
        for diagnostic in &self.diagnostics {
            emit(&mut writer, config, &self.files, &diagnostic).unwrap();
        }
        writer
    }

    pub fn emit_color(&'files self, config: &Config) -> String {
        self.emit(ColorBuffer::new(), &config).into_string()
    }

    pub fn emit_no_color(&'files self, config: &Config) -> String {
        let buffer = self.emit(Buffer::no_color(), &config);
        String::from_utf8_lossy(buffer.as_slice()).into_owned()
    }
}