+pub struct Strategy {}
+
+use std::path::PathBuf;
+
+use crate::file_handler::{File, 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, file_type: &FileType) -> bool {
+ match file_type {
+ FileType::Gemini => true,
+ _ => false,
+ }
+ }
+
+ fn handle(&self, file: &File) {
+ println!("Should parse and copy {}", file.path.display())
+ }
+}