exa/src/dir.rs

42 lines
1.0 KiB
Rust
Raw Normal View History

use std::io::{fs, IoResult};
use file::File;
// The purpose of a Dir is to provide a cached list of the file paths
// in the directory being searched for. This object is then passed to
// the Files themselves, which can then check the status of their
// surrounding files, such as whether it needs to be coloured
// differently if a certain other file exists.
2014-11-26 07:40:52 +00:00
pub struct Dir {
pub contents: Vec<Path>,
pub path: Path,
}
2014-11-26 07:40:52 +00:00
impl Dir {
pub fn readdir(path: Path) -> IoResult<Dir> {
fs::readdir(&path).map(|paths| Dir {
contents: paths,
path: path.clone(),
})
}
2014-11-26 07:40:52 +00:00
pub fn files(&self) -> Vec<File> {
let mut files = vec![];
2014-12-12 12:08:14 +00:00
for path in self.contents.iter() {
match File::from_path(path.clone(), Some(self)) {
2014-11-24 02:12:52 +00:00
Ok(file) => files.push(file),
Err(e) => println!("{}: {}", path.display(), e),
}
}
2014-12-12 12:08:14 +00:00
files
}
pub fn contains(&self, path: &Path) -> bool {
self.contents.contains(path)
}
}