From 9801674815b386a6dcb0022ff772a2ded7d3324b Mon Sep 17 00:00:00 2001 From: Alek Ratzloff Date: Thu, 17 Feb 2022 19:02:13 -0800 Subject: [PATCH] Format array.__str__ output Signed-off-by: Alek Ratzloff --- src/obj/array.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/obj/array.rs b/src/obj/array.rs index e02583d..bbf643d 100644 --- a/src/obj/array.rs +++ b/src/obj/array.rs @@ -29,7 +29,7 @@ thread_local! { 0 => { let array = machine.stack_pop()?; let index = IntObj::new(0); - let working = StrObj::new(String::new()); + let working = StrObj::new(String::from("{")); machine.stack_push(working)?; machine.stack_push(index)?; machine.stack_push(array)?; @@ -48,7 +48,12 @@ thread_local! { .ok_or_else(|| RuntimeError::WrongValue("int".to_string()))?; let index = index_int.value() as usize; if array.value().len() <= index { - // done iterating, exit + // done iterating, add closing brace and then exit + let working_obj = machine.stack_pop()?; + let working = working_obj.as_any().downcast_ref::() + .ok_or_else(|| RuntimeError::WrongValue("string".to_string()))?; + let str_final = StrObj::new(format!("{} }}", working.value())); + machine.stack_push(str_final)?; return Ok(BuiltinExit::Return); } // get the current item from the array, push the index and @@ -82,7 +87,7 @@ thread_local! { let working = working_obj.as_any().downcast_ref::() .ok_or_else(|| RuntimeError::WrongValue("str".to_string()))?; - let new_str = StrObj::new(format!("{}{}", working.value(), returned.value())); + let new_str = StrObj::new(format!("{} {}", working.value(), returned.value())); // index gets incremented here let new_index = IntObj::new(index.value() + 1);