diff --git a/botserver/src/basic/keywords/switcher.rs b/botserver/src/basic/keywords/switcher.rs index 8c60d6bb..95eb16e6 100644 --- a/botserver/src/basic/keywords/switcher.rs +++ b/botserver/src/basic/keywords/switcher.rs @@ -84,31 +84,24 @@ pub fn clear_switchers_keyword( } pub fn add_switcher_keyword( - state: Arc, - user_session: UserSession, - engine: &mut Engine, + state: Arc, + user_session: UserSession, + engine: &mut Engine, ) { - let cache = state.cache.clone(); + let cache = state.cache.clone(); + let user_session_clone = user_session.clone(); - engine - .register_custom_syntax( - ["ADD_SWITCHER", "$expr$", "as", "$expr$"], - true, - move |context, inputs| { - let first_param = context.eval_expression_tree(&inputs[0])?.to_string(); - let button_text = context.eval_expression_tree(&inputs[1])?.to_string(); - - add_switcher( - cache.as_ref(), - &user_session, - &first_param, - &button_text, - )?; - - Ok(Dynamic::UNIT) - }, - ) - .expect("valid syntax registration"); + engine + .register_fn("add_switcher", move |switcher_id: &str, button_text: &str| { + let result = add_switcher( + cache.as_ref(), + &user_session_clone, + switcher_id, + button_text, + ); + result.map_err(|e| e.to_string()) + }) + .expect("valid function registration"); } fn add_switcher( diff --git a/botserver/src/basic/mod.rs b/botserver/src/basic/mod.rs index e5b50238..1ac73f5f 100644 --- a/botserver/src/basic/mod.rs +++ b/botserver/src/basic/mod.rs @@ -1320,11 +1320,11 @@ pub fn convert_keywords_to_lowercase(script: &str) -> String { (r#"CLEAR\s+WEBSITES"#, 0, 0, vec![]), // ADD family - single-token keywords to avoid ADD conflicts - (r#"ADD_SUGGESTION_TOOL"#, 2, 2, vec!["tool", "text"]), - (r#"ADD_SUGGESTION_TEXT"#, 2, 2, vec!["value", "text"]), - (r#"ADD_SUGGESTION(?!\\s+TOOL|\\s+TEXT|_)"#, 2, 2, vec!["context", "text"]), - (r#"ADD_SWITCHER"#, 2, 2, vec!["switcher", "text"]), - (r#"ADD\\s+MEMBER"#, 2, 2, vec!["name", "role"]), +(r#"ADD_SUGGESTION_TOOL"#, 2, 2, vec!["tool", "text"]), +(r#"ADD_SUGGESTION_TEXT"#, 2, 2, vec!["value", "text"]), +(r#"ADD_SUGGESTION(?!\\s+TOOL|\\s+TEXT|_)"#, 2, 2, vec!["context", "text"]), +(r#"ADD\s+SWITCHER"#, 2, 2, vec!["switcher", "text"]), +(r#"ADD\\s+MEMBER"#, 2, 2, vec!["name", "role"]), // CREATE family (r#"CREATE\s+TASK"#, 1, 1, vec!["task"]),