2016-04-16 21:05:50 +00:00
|
|
|
use std::path::PathBuf;
|
|
|
|
|
2018-12-07 23:43:31 +00:00
|
|
|
use crate::fs::File;
|
2016-04-16 21:05:50 +00:00
|
|
|
|
|
|
|
|
2016-06-11 12:35:31 +00:00
|
|
|
impl<'a> File<'a> {
|
2016-04-16 21:05:50 +00:00
|
|
|
|
|
|
|
/// 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”.
|
|
|
|
///
|
2019-09-10 14:51:08 +00:00
|
|
|
/// 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`)
|
2016-04-16 21:05:50 +00:00
|
|
|
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
|
|
|
|
|
2017-05-07 16:39:01 +00:00
|
|
|
"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
|
2016-04-16 21:05:50 +00:00
|
|
|
"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!
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|