]> git.r.bdr.sh - rbdr/page/commitdiff
Add basic strategies
authorRuben Beltran del Rio <redacted>
Sat, 15 Apr 2023 14:39:12 +0000 (16:39 +0200)
committerRuben Beltran del Rio <redacted>
Sat, 15 Apr 2023 14:39:12 +0000 (16:39 +0200)
src/file_handler/file_strategies/file.rs
src/file_handler/file_strategies/gemini.rs
src/file_handler/file_strategies/layout.rs
src/file_handler/file_strategies/mod.rs
src/file_handler/mod.rs

index 530bbd6ebd746cecbd6f1f355cbc3f4fe62d31dd..c9e8c9654816fbb24ea130136f8e650c6244bdd7 100644 (file)
@@ -14,7 +14,7 @@ impl FileHandlerStrategy for Strategy {
     }
 
     fn can_handle(&self, path: &PathBuf) -> bool {
-        !path.is_dir()
+        self.is(path)
     }
 
     fn handle(&self, path: &PathBuf) {
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ffa2a9f1e8a0930cafa1f6f691f710ca80f8f53f 100644 (file)
@@ -0,0 +1,26 @@
+pub struct Strategy {}
+
+use std::path::PathBuf;
+
+use crate::file_handler::{FileType, FileHandlerStrategy};
+
+impl FileHandlerStrategy for Strategy {
+    fn is(&self, path: &PathBuf) -> bool {
+        if let Some(extension) = path.extension() {
+            return !path.is_dir() && extension == "gmi"
+        }
+        false
+    }
+
+    fn identify(&self) -> FileType {
+        FileType::Gemini
+    }
+
+    fn can_handle(&self, path: &PathBuf) -> bool {
+        self.is(path)
+    }
+
+    fn handle(&self, path: &PathBuf) {
+        println!("Should convert {}", path.display())
+    }
+}
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cf1bb9ff9a7f86b3511093cd1ec43cba1f55ba51 100644 (file)
@@ -0,0 +1,24 @@
+pub struct Strategy {}
+
+use std::path::PathBuf;
+
+use crate::file_handler::{FileType, FileHandlerStrategy};
+
+impl FileHandlerStrategy for Strategy {
+    fn is(&self, path: &PathBuf) -> bool {
+        return !path.is_dir() && path.ends_with("_layout.html");
+    }
+
+    fn identify(&self) -> FileType {
+        FileType::Layout
+    }
+
+    fn can_handle(&self, path: &PathBuf) -> bool {
+        self.is(path)
+    }
+
+    fn handle(&self, path: &PathBuf) {
+        println!("Should convert {}", path.display())
+    }
+}
+
index 2e172cd0fb4b25db76ad0b9c2160174fa078bde5..c4b17b629e6543afc2c94480d690a212d83cb357 100644 (file)
@@ -1 +1,3 @@
 pub mod file;
+pub mod gemini;
+pub mod layout;
index 8038b3c032189536191e7855864944a4f423cbe6..44fec6db5589df43d12f6767f5eee687215b4b18 100644 (file)
@@ -1,6 +1,9 @@
 mod file_strategies;
 
 use file_strategies::file::Strategy as FileStrategy;
+use file_strategies::gemini::Strategy as GeminiStrategy;
+use file_strategies::layout::Strategy as LayoutStrategy;
+
 use std::path::PathBuf;
 
 pub struct FileHandler {
@@ -10,7 +13,11 @@ pub struct FileHandler {
 impl Default for FileHandler {
     fn default() -> FileHandler {
         FileHandler {
-            strategies: vec![Box::new(FileStrategy{})]
+            strategies: vec![
+                Box::new(GeminiStrategy{}),
+                Box::new(LayoutStrategy{}),
+                Box::new(FileStrategy{}),
+            ]
         }
     }
 }