use crate::script::*;
#[derive(Debug, Clone, PartialEq)]
pub struct ScriptSet(pub(crate) Vec<ElementProperty>);
pub(crate) fn script_set_from(items: Vec<Dynamic>) -> Result<ScriptSet, Box<rhai::EvalAltResult>> {
let mut out = Vec::with_capacity(items.len());
for item in items {
let plain = item.is_string()
|| item.is_float()
|| item.is_int()
|| item.is_bool()
|| item.is_unit()
|| item.is::<ScriptUuid>();
if !plain {
return Err(Box::new(rhai::EvalAltResult::ErrorRuntime(
Dynamic::from(crate::error::format_diagnostic(
&crate::error::ScriptError::ArgumentMismatch {
step_name: "Set.of".to_string(),
expected: "plain values (strings, numbers, booleans, UUIDs, null)"
.to_string(),
actual: crate::script::dynamic::type_name_of(&item),
},
)),
rhai::Position::NONE,
)));
}
out.push(dynamic_to_element_property(
item,
crate::value::depth::DEFAULT_MAX_VALUE_DEPTH,
)?);
}
Ok(ScriptSet(out))
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ScriptSetTokens;