exa/src/info/sources.rs

38 lines
1.7 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
/// don't want to always blindly highlight `*.js` as compiled.
/// (See also `FileExtensions#is_compiled`)
pub fn get_source_files(&self) -> Vec<PathBuf> {
if let Some(ref 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
"blg" | // BibTeX log 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 there's no extension, either!
}
}
}