67 lines
1.3 KiB
Rust
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 = []
|
|
duplicates = false
|
|
|
|
[local.length]
|
|
transforms = ["meta/number:value"]
|
|
subobjects = []
|
|
conditions = []
|
|
duplicates = 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)
|
|
}
|