Add ability for reading variables
This commit is contained in:
parent
4f8b004183
commit
64c5958193
18
src/main.rs
18
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 argument_vec: Vec<char> = arguments.chars().collect();
|
||||
|
||||
let value = old_value.to_owned();
|
||||
|
||||
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!");
|
||||
|
|
Loading…
Reference in New Issue