1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
use std::io::Error;
use utils::string::str;

pub mod bash;
pub mod c;
pub mod cpp;
pub mod csharp;
pub mod css;
pub mod golang;
pub mod html;
pub mod java;
pub mod javascript;
pub mod lua;
pub mod php;
pub mod python;
pub mod ruby;
pub mod rust;
pub mod scala;

pub enum FileType {
    Bash,
    C,
    CSS,
    CSharp,
    Cpp,
    Go,
    HTML,
    Java,
    JavaScript,
    Lua,
    PHP,
    Python,
    Ruby,
    Rust,
    Scala,
}

pub trait Language {
    fn find(&self) -> Result<FindResult, Error>
    where
        Self: Sized;
}

#[derive(Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
pub struct FindResult {
    pub file_name: String,
    pub lines: Vec<u32>,
    pub print: bool,
}

impl Default for FindResult {
    fn default() -> FindResult {
        FindResult {
            file_name: str("DEFAULT_FILE_NAME"),
            lines: [].to_vec(),
            print: true,
        }
    }
}