use crate::env::StringWrapper;
use crate::eval::{Fields, ParamEval};
pub fn len<P, E: ?Sized>(param: &P, env: &E) -> P::EvalResult
where
P: ParamEval<E>,
{
let len = match param.eval(false, env).unwrap_or(Fields::Zero) {
Fields::Zero => 0,
Fields::Single(s) => s.as_str().len(),
Fields::At(v) | Fields::Star(v) => v.len(),
Fields::Split(v) => v.into_iter().fold(0, |l, s| l + s.as_str().len()),
};
len.to_string().into()
}