commit 64c5958193816f12a089c0b04559bddb24ed8809
parent 4f8b0041839453a0def59dfea6678d4c899921cb
Author: ~karx <karx@tilde.team>
Date: Sun, 7 Feb 2021 00:10:34 +0000
Add ability for reading variables
Diffstat:
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/src/main.rs b/src/main.rs
@@ -9,7 +9,7 @@ mod eval;
struct Program {
data: Vec<String>,
pc: usize,
- vars: HashMap<char, String>
+ vars: HashMap<char, char>
}
impl Program {
@@ -32,22 +32,21 @@ impl Program {
let mut deconstructed: Vec<char> = arguments.chars().collect();
for (index, char) in arguments.chars().enumerate() {
- if char == 'e' {
- deconstructed[index] = 'f';
+ let value = self.vars.get(&char);
+
+ match value {
+ Some(content) => deconstructed[index] = *content,
+ None => {}
}
}
- println!("{:?}", self.vars);
deconstructed.into_iter().collect()
}
fn add_var(&mut self, arguments: &str) {
- let name = arguments.chars().collect::<Vec<char>>()[0];
- let old_value = &arguments[1..];
-
- let value = old_value.to_owned();
+ let argument_vec: Vec<char> = arguments.chars().collect();
- self.vars.insert(name, value);
+ self.vars.insert(argument_vec[0], argument_vec[1]);
}
fn eval(&mut self, instruction: &String) {
@@ -84,7 +83,6 @@ impl fmt::Display for Program {
}
fn main() {
-
let args: Vec<String> = env::args().collect();
if args.len() == 1 {
panic!("You must provide an argument!");