use mumu::parser::types::Value;
use mumu::parser::interpreter::Interpreter;
pub fn array_length_bridge(
_interp: &mut Interpreter,
args: Vec<Value>
) -> Result<Value, String> {
if args.len() != 1 {
return Err("array:length expects exactly one argument".to_string());
}
let v = &args[0];
let len = match v {
Value::IntArray(xs) => xs.len() as i32,
Value::FloatArray(xs) => xs.len() as i32,
Value::BoolArray(xs) => xs.len() as i32,
Value::StrArray(xs) => xs.len() as i32,
Value::MixedArray(xs) => xs.len() as i32,
Value::Int2DArray(xs) => xs.len() as i32,
Value::Float2DArray(xs) => xs.len() as i32,
Value::KeyedArray(map) => map.len() as i32,
Value::SingleString(s) => s.chars().count() as i32,
_ => 0,
};
Ok(Value::Int(len))
}