exa/src/info/sources.rs

41 lines
2.0 KiB
Rust
Raw Normal View History

use std::path::PathBuf;
2018-12-07 23:43:31 +00:00
use crate::fs::File;
impl<'a> File<'a> {
/// For this file, return a vector of alternate file paths that, if any of
/// them exist, mean that *this* file should be coloured as “compiled”.
///
/// The point of this is to highlight compiled files such as `foo.js` when
/// their source file `foo.coffee` exists in the same directory.
/// For example, `foo.js` is perfectly valid without `foo.coffee`, so we
/// dont want to always blindly highlight `*.js` as compiled.
/// (See also `FileExtensions#is_compiled`)
pub fn get_source_files(&self) -> Vec<PathBuf> {
if let Some(ext) = &self.ext {
match &ext[..] {
"css" => vec![self.path.with_extension("sass"), self.path.with_extension("less")], // SASS, Less
"js" => vec![self.path.with_extension("coffee"), self.path.with_extension("ts")], // CoffeeScript, TypeScript
"aux" | // TeX: auxiliary file
"bbl" | // BibTeX bibliography file
2020-10-04 00:25:24 +00:00
"bcf" | // biblatex control file
"blg" | // BibTeX log file
"fdb_latexmk" | // TeX latexmk file
"fls" | // TeX -recorder file
"lof" | // TeX list of figures
"log" | // TeX log file
"lot" | // TeX list of tables
"toc" => vec![self.path.with_extension("tex")], // TeX table of contents
_ => vec![], // No source files if none of the above
}
}
else {
vec![] // No source files if theres no extension, either!
}
}
}