diff --git a/src/config.rs b/src/config.rs index 351dba2..a356d09 100644 --- a/src/config.rs +++ b/src/config.rs @@ -19,7 +19,7 @@ impl Config<'static> { let mut engine = Engine::new(); let mut scope = Scope::new(); let ast = engine - .compile_file(PathBuf::from_str("assets/config.rhai").unwrap()) + .compile_file(PathBuf::from_str("/home/able/Projects/adit/assets/config.rhai").unwrap()) .unwrap(); let result = engine.call_fn::(&mut scope, &ast, "status_bar", ()); diff --git a/src/filetype.rs b/src/filetype.rs index 92824a4..cb2038b 100644 --- a/src/filetype.rs +++ b/src/filetype.rs @@ -32,106 +32,121 @@ impl FileType { &self.hl_opts } pub fn from(file_name: &str) -> Self { - if file_name.ends_with(".rs") { - return Self { - name: String::from("Rust"), - hl_opts: HighlightingOptions { - numbers: true, - strings: true, - characters: true, - comments: true, - multiline_comments: true, - primary_keywords: vec![ - "as".to_string(), - "break".to_string(), - "const".to_string(), - "continue".to_string(), - "crate".to_string(), - "else".to_string(), - "enum".to_string(), - "extern".to_string(), - "false".to_string(), - "fn".to_string(), - "for".to_string(), - "if".to_string(), - "impl".to_string(), - "in".to_string(), - "let".to_string(), - "loop".to_string(), - "match".to_string(), - "mod".to_string(), - "move".to_string(), - "mut".to_string(), - "pub".to_string(), - "ref".to_string(), - "return".to_string(), - "self".to_string(), - "Self".to_string(), - "static".to_string(), - "struct".to_string(), - "super".to_string(), - "trait".to_string(), - "true".to_string(), - "type".to_string(), - "unsafe".to_string(), - "use".to_string(), - "where".to_string(), - "while".to_string(), - "dyn".to_string(), - "abstract".to_string(), - "become".to_string(), - "box".to_string(), - "do".to_string(), - "final".to_string(), - "macro".to_string(), - "override".to_string(), - "priv".to_string(), - "typeof".to_string(), - "unsized".to_string(), - "virtual".to_string(), - "yield".to_string(), - "async".to_string(), - "await".to_string(), - "try".to_string(), - ], - secondary_keywords: vec![ - "bool".to_string(), - "char".to_string(), - "i8".to_string(), - "i16".to_string(), - "i32".to_string(), - "i64".to_string(), - "isize".to_string(), - "u8".to_string(), - "u16".to_string(), - "u32".to_string(), - "u64".to_string(), - "usize".to_string(), - "f32".to_string(), - "f64".to_string(), - ], - }, - }; - } - if file_name.ends_with(".hb") { - return Self { - name: String::from("HBLang"), - hl_opts: HighlightingOptions { - numbers: true, - strings: true, - characters: true, - comments: true, - multiline_comments: true, - primary_keywords: vec![ - "if".to_string(), - "else".to_string(), - "return".to_string(), - "loop".to_string(), - "break".to_string(), - ], - secondary_keywords: vec![":=".to_string(), "int".to_string()], - }, - }; + let ext = file_name.split('.').last(); + if ext.is_some() { + let ext = ext.unwrap(); + match ext { + "rs" => { + return Self { + name: String::from("Rust"), + hl_opts: HighlightingOptions { + numbers: true, + strings: true, + characters: true, + comments: true, + multiline_comments: true, + primary_keywords: vec![ + "as".to_string(), + "break".to_string(), + "const".to_string(), + "continue".to_string(), + "crate".to_string(), + "else".to_string(), + "enum".to_string(), + "extern".to_string(), + "false".to_string(), + "fn".to_string(), + "for".to_string(), + "if".to_string(), + "impl".to_string(), + "in".to_string(), + "let".to_string(), + "loop".to_string(), + "match".to_string(), + "mod".to_string(), + "move".to_string(), + "mut".to_string(), + "pub".to_string(), + "ref".to_string(), + "return".to_string(), + "self".to_string(), + "Self".to_string(), + "static".to_string(), + "struct".to_string(), + "super".to_string(), + "trait".to_string(), + "true".to_string(), + "type".to_string(), + "unsafe".to_string(), + "use".to_string(), + "where".to_string(), + "while".to_string(), + "dyn".to_string(), + "abstract".to_string(), + "become".to_string(), + "box".to_string(), + "do".to_string(), + "final".to_string(), + "macro".to_string(), + "override".to_string(), + "priv".to_string(), + "typeof".to_string(), + "unsized".to_string(), + "virtual".to_string(), + "yield".to_string(), + "async".to_string(), + "await".to_string(), + "try".to_string(), + ], + secondary_keywords: vec![ + "bool".to_string(), + "char".to_string(), + "i8".to_string(), + "i16".to_string(), + "i32".to_string(), + "i64".to_string(), + "isize".to_string(), + "u8".to_string(), + "u16".to_string(), + "u32".to_string(), + "u64".to_string(), + "usize".to_string(), + "f32".to_string(), + "f64".to_string(), + ], + }, + } + } + "hb" => { + return Self { + name: String::from("HBLang"), + hl_opts: HighlightingOptions { + numbers: true, + strings: true, + characters: true, + comments: true, + multiline_comments: true, + primary_keywords: vec![ + "if".to_string(), + "else".to_string(), + "return".to_string(), + "loop".to_string(), + "break".to_string(), + "struct".to_string(), + ], + secondary_keywords: vec![ + ":=".to_string(), + "void".to_string(), + "never".to_string(), + "int".to_string(), + "bool".to_string(), + ], + }, + }; + } + + _ => return Self::default(), + } } Self::default()