wgu/server/src/modules/meta/text.rs

67 lines
1.3 KiB
Rust

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<FunctionItem>
)
-> Result<FunctionItem, String>
{
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)
}