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 std::fs::File;
use std::io::{prelude::*, BufReader};

pub fn read_file(filename: &str) -> Vec<String> {
    let file = File::open(filename).expect("no such file");
    let buf = BufReader::new(file);
    buf.lines()
        .map(|l| l.expect("Could not parse line"))
        .collect()
}

#[macro_export]
macro_rules! capture {
    () => {{
        use $crate::color::Color;
        let line = line!() as i64;
        let file = file!();
        let lines = $crate::codeframe_macro::read_file(file);
        use $crate::capture::capture_codeframe;
        let codeframe = capture_codeframe(lines, line, Color::Red);
        codeframe
    }};
    ($color:expr) => {{
        let line = line!() as i64;
        let file = file!();
        let lines = $crate::codeframe_macro::read_file(file);
        use $crate::capture::capture_codeframe;
        let codeframe = capture_codeframe(lines, line, $color);
        codeframe
    }};
}