commit f9414fca23c25de2263031cd1abe135e8d3b6b36
parent 96bdc3c5f4097a9db149d14940c5ac3ecbdcc0ec
Author: ~karx <karx@tilde.team>
Date: Tue, 16 Mar 2021 12:41:50 -0500
Implement importing of specific names
Diffstat:
M | src/main.rs | | | 42 | ++++++++++++++++++++++++++++++++++++------ |
1 file changed, 36 insertions(+), 6 deletions(-)
diff --git a/src/main.rs b/src/main.rs
@@ -149,14 +149,44 @@ impl Program {
let contents = fs::read_to_string(filename).expect("Something went wrong reading the file");
let mut prog = Program::from_string(contents);
prog.run();
-
- 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());
+ 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());
+ }
+
+ for (key, value) in prog.funcs.iter() {
+ 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) {