blob: 67536640585edf989348357da5f37f121558e09e (
plain)
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
|
use std::env;
pub struct Args {
pub directory: String,
pub n_sentences: u32,
pub unique: bool,
}
impl Args {
pub fn parse() -> Option<Args> {
let arg_vec: Vec<String> = env::args().collect();
let mut i = 1; //skip first arg (execution path)
let mut n_sentences = 1;
let mut unique = false;
let mut opt_directory: Option<String> = None;
while i < arg_vec.len() {
match arg_vec[i].as_str() {
"-n" | "--sentences" => {
if i + 1 < arg_vec.len() {
n_sentences = arg_vec[i+1].parse::<u32>().ok()?;
} else {
return None;
}
i += 2;
},
"--unique" => {
unique = true;
i += 1;
},
other => {
opt_directory = match opt_directory {
Some(_) => { return None; },
None => Some(other.to_string()),
};
i += 1;
},
}
}
let directory = opt_directory?;
Some(Args {
directory,
n_sentences,
unique,
})
}
}
|