Implement importing of specific names
This commit is contained in:
parent
d11d5ce755
commit
dab95136c4
30
src/main.rs
30
src/main.rs
|
@ -150,6 +150,28 @@ impl Program {
|
|||
let mut prog = Program::from_string(contents);
|
||||
prog.run();
|
||||
|
||||
if argument_vec.len() > 1 {
|
||||
for name in argument_vec[1..].iter() {
|
||||
let kind = name.chars().nth(0).unwrap();
|
||||
let name_to_import = name.chars().nth(1).unwrap();
|
||||
if kind == 'v' {
|
||||
let key = prog.vars.get(&name_to_import);
|
||||
match key {
|
||||
Some(value) => self.vars.insert(name_to_import, value.to_string()),
|
||||
None => panic!("ValueError: variable {} has not been defined in {}!", name_to_import, filename)
|
||||
};
|
||||
} else if kind == 'f' {
|
||||
let key = prog.funcs.get(&name_to_import);
|
||||
match key {
|
||||
Some(value) => {self.funcs.insert(name_to_import, value.to_string());()},
|
||||
None => panic!("ValueError: function {} has not been defined in {}!", name_to_import, filename)
|
||||
}
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// implied catch-all
|
||||
for (key, value) in prog.vars.iter() {
|
||||
self.vars.insert(*key, value.to_string());
|
||||
}
|
||||
|
@ -158,6 +180,14 @@ impl Program {
|
|||
self.funcs.insert(*key, value.to_string());
|
||||
}
|
||||
}
|
||||
// for (key, value) in prog.vars.iter() {
|
||||
// self.vars.insert(*key, value.to_string());
|
||||
// }
|
||||
|
||||
// for (key, value) in prog.funcs.iter() {
|
||||
// self.funcs.insert(*key, value.to_string());
|
||||
// }
|
||||
}
|
||||
|
||||
fn parse(&mut self, instruction: &String) {
|
||||
// Opcode is the first character, arguments are everything after the first char
|
||||
|
|
Loading…
Reference in New Issue