Skip to main content

runmat_runtime/builtins/strings/transform/
strjoin.rs

1use runmat_builtins::{
2    BuiltinCompletionPolicy, BuiltinDescriptor, BuiltinOutputMode, BuiltinParamArity,
3    BuiltinParamDescriptor, BuiltinParamType, BuiltinSignatureDescriptor, Value,
4};
5
6const STRJOIN_OUTPUT: [BuiltinParamDescriptor; 1] = [BuiltinParamDescriptor {
7    name: "out",
8    ty: BuiltinParamType::Any,
9    arity: BuiltinParamArity::Required,
10    default: None,
11    description: "Joined string array.",
12}];
13
14const STRJOIN_INPUTS: [BuiltinParamDescriptor; 2] = [
15    BuiltinParamDescriptor {
16        name: "text",
17        ty: BuiltinParamType::Any,
18        arity: BuiltinParamArity::Required,
19        default: None,
20        description: "Input text array.",
21    },
22    BuiltinParamDescriptor {
23        name: "delimiter",
24        ty: BuiltinParamType::Any,
25        arity: BuiltinParamArity::Required,
26        default: None,
27        description: "Delimiter inserted between row elements.",
28    },
29];
30
31const STRJOIN_SIGNATURES: [BuiltinSignatureDescriptor; 1] = [BuiltinSignatureDescriptor {
32    label: "out = strjoin(text, delimiter)",
33    inputs: &STRJOIN_INPUTS,
34    outputs: &STRJOIN_OUTPUT,
35}];
36
37pub const STRJOIN_DESCRIPTOR: BuiltinDescriptor = BuiltinDescriptor {
38    signatures: &STRJOIN_SIGNATURES,
39    output_mode: BuiltinOutputMode::Fixed,
40    completion_policy: BuiltinCompletionPolicy::Public,
41    errors: &[],
42};
43
44#[runmat_macros::runtime_builtin(
45    name = "strjoin",
46    descriptor(self::STRJOIN_DESCRIPTOR),
47    builtin_path = "crate::builtins::strings::transform::strjoin"
48)]
49pub async fn strjoin_builtin(a: Value, delim: Value) -> crate::BuiltinResult<Value> {
50    crate::strjoin_rowwise(a, delim).await
51}