Skip to content

Commit 0aeba43

Browse files
Make remove() return a value
1 parent 05756d6 commit 0aeba43

3 files changed

Lines changed: 16 additions & 8 deletions

File tree

src/utils/helpers.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -654,9 +654,11 @@ fn pixmap_to_cpu_texture(pixmap: &resvg::tiny_skia::Pixmap) -> Result<CPUTexture
654654
buf.extend_from_slice(&[0, 0, 0, 0]);
655655
}
656656
}
657-
Ok(
658-
CPUTexture::load_from_bytes(buf.as_slice(), pixmap.width(), pixmap.height())?
659-
)
657+
Ok(CPUTexture::load_from_bytes(
658+
buf.as_slice(),
659+
pixmap.width(),
660+
pixmap.height(),
661+
)?)
660662
}
661663

662664
fn get_mut_container<'a>(

src/utils/runtime.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ use kira::{AudioManager, AudioManagerSettings, DefaultBackend};
55
use serde::Deserialize;
66
use std::collections::{HashMap, HashSet};
77

8-
use crate::utils::{core::*, rasterize_svg};
98
use crate::utils::draw_sprite;
9+
use crate::utils::{core::*, rasterize_svg};
1010

1111
use super::sprite::StopRequest;
1212
use super::{Parser, Project, Tokenizer, sprite::Sprite, sprite::SpriteSnapshot};

src/utils/sprite/builtins/misc.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -495,17 +495,23 @@ pub fn insert(args: &[Value]) -> Result {
495495

496496
pub fn remove(args: &[Value]) -> Result {
497497
if let [Value::Object(obj), Value::String(key)] = args {
498+
if !obj.contains_key(key) {
499+
return Err("remove() key not found in object".to_string());
500+
}
498501
let mut obj = obj.clone();
499-
obj.remove(key);
500-
Ok(Value::Object(obj))
502+
let val = obj.remove(key);
503+
Ok(Value::List(vec![
504+
Value::Object(obj),
505+
val.unwrap_or(Value::Null),
506+
]))
501507
} else if let [Value::List(list), Value::Number(index)] = args {
502508
let index = *index as usize;
503509
if index >= list.len() {
504510
return Err("remove() index out of bounds".to_string());
505511
}
506512
let mut list = list.clone();
507-
list.remove(index);
508-
Ok(Value::List(list))
513+
let val = list.remove(index);
514+
Ok(Value::List(vec![Value::List(list), val]))
509515
} else {
510516
Err("remove() expects a list or an object, and a key or index".to_string())
511517
}

0 commit comments

Comments
 (0)