Skip to content

Commit 006c246

Browse files
committed
add fields() API
1 parent 37eb165 commit 006c246

2 files changed

Lines changed: 27 additions & 5 deletions

File tree

src/lib.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ mod tests {
2222

2323
pub mod minparse {
2424

25-
use std::env;
25+
use std::{env, collections::HashMap};
2626

2727
pub fn process_name() -> String {
2828
let args = env::args();
@@ -67,8 +67,24 @@ pub mod minparse {
6767
return switches;
6868
}
6969

70-
pub fn fields() -> Vec<Vec<String>> {
71-
let mut fields: Vec<Vec<String>> = vec![];
70+
pub fn fields() -> HashMap<String, String> {
71+
let mut fields: HashMap<String, String> = HashMap::new();
72+
let args: Vec<String> = env::args().collect();
73+
let mut c_index: usize = 0;
74+
for i in &args {
75+
if c_index == 0 {
76+
c_index = 1;
77+
continue;
78+
}
79+
if i.starts_with("--"){
80+
if !(args.len() <= c_index+1) {
81+
if !args[c_index+1].starts_with("--"){
82+
fields.insert((&i.to_owned()).to_owned(), (&args[c_index+1]).to_owned());
83+
}
84+
}
85+
}
86+
c_index = c_index+1;
87+
}
7288
return fields;
7389
}
7490
}

src/main.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
use minparse::minparse;
22

33
fn main(){
4-
println!("\t\tprocname: {}
4+
println!("\tprocname: {}
55
switches: {:?}
6-
subcommands: {:?}", minparse::process_name(), minparse::switches(), minparse::subcommands())
6+
subcommands: {:?}
7+
fields: {:?}",
8+
minparse::process_name(),
9+
minparse::switches(),
10+
minparse::subcommands(),
11+
minparse::fields()
12+
)
713

814
}

0 commit comments

Comments
 (0)