aboutsummaryrefslogtreecommitdiffstats
path: root/src/project.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/project.rs')
-rw-r--r--src/project.rs15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/project.rs b/src/project.rs
index 5486dc1..18c2083 100644
--- a/src/project.rs
+++ b/src/project.rs
@@ -8,6 +8,17 @@ pub mod path;
#[cfg(feature = "git")]
pub mod git;
+pub type ProjectParserGroup = Vec<Box<dyn ProjectParser>>;
+
+pub trait ProjectParser {
+ fn parse(&self, path_buf: PathBuf) -> Option<ProjectItem>;
+}
+
+impl ProjectParser for ProjectParserGroup {
+ fn parse(&self, path_buf: std::path::PathBuf) -> Option<ProjectItem> {
+ self.iter().find_map(|p| p.parse(path_buf.to_owned()))
+ }
+}
pub type ProjectItem = Box<dyn Project>;
@@ -25,10 +36,6 @@ where
}
}
-pub trait ProjectParser {
- fn parse_project(&self, path_buf: PathBuf) -> Option<ProjectItem>;
-}
-
pub trait Timestamp {
fn timestamp(&self) -> &Duration;
}