use std::collections::HashMap; use serde_json::json; use crate::{modules::FunctionItem, types::ObjectInstance}; pub const TEMPLATE: &str = r#" [input.value] transforms = [] subobjects = [] conditions = [] array = false [local.length] transforms = ["meta/number:value"] subobjects = [] conditions = [] array = false "#; pub const TEMPLATE_LOCAL: &str = r#" [inputs.main] required = true object_type = "meta/text" count = 1 [outputs.main] required = true object_type = "meta/text" count = 1 "#; pub fn validate(obj: &ObjectInstance) -> Result<(), String> { let value = obj.input.get("value") .ok_or("input.value must exist")?; let _value = value.as_str() .ok_or("input.value must be a string")?; Ok(()) } pub fn local( inputs: FunctionItem, _params: Option ) -> Result { let Some(main) = inputs.get("main") else { unreachable!() }; let main_obj = &main[0]; let Some(value) = &main_obj.input.get("value") else { unreachable!() }; let mut result_obj = ObjectInstance::from_object_type("meta/text", main_obj.input.clone())?; result_obj.local = json!({ "length": value.to_string().len() }); let mut result = HashMap::new(); result.insert(format!("main"), vec![result_obj]); Ok(result) }