@@ -97,25 +97,40 @@ spec_is_possible <- function(spec,
9797 user_specified_mode = spec $ user_specified_mode ) {
9898 cls <- class(spec )[[1 ]]
9999
100- all_model_info <-
101- dplyr :: full_join(
102- model_info_table ,
103- rlang :: env_get(get_model_env(), cls ) %> % dplyr :: mutate(model = cls ),
104- by = c(" model" , " engine" , " mode" )
105- )
100+ model_env <- rlang :: env_get(get_model_env(), cls )
101+ model_env_matches <- model_env
102+ model_env_matches $ model <- cls
103+ model_info_table_matches <-
104+ vctrs :: vec_slice(model_info_table ,
105+ model_info_table $ model == cls )
106+
107+ if (isTRUE(user_specified_engine ) && ! is.null(engine )) {
108+ model_env_matches <-
109+ vctrs :: vec_slice(model_env_matches ,
110+ model_env_matches $ engine == engine )
111+
112+ model_info_table_matches <-
113+ vctrs :: vec_slice(model_info_table_matches ,
114+ model_info_table_matches $ engine == engine )
115+ }
106116
107- engine_condition <- engine_filter_condition(engine , user_specified_engine )
108- mode_condition <- mode_filter_condition(mode , user_specified_mode )
117+ if (isTRUE(user_specified_mode ) && ! is.null(mode )) {
118+ model_env_matches <-
119+ vctrs :: vec_slice(model_env_matches ,
120+ model_env_matches $ mode == mode )
109121
110- possibilities <-
111- all_model_info %> %
112- dplyr :: filter(
113- model == cls ,
114- !! engine_condition ,
115- !! mode_condition
116- )
122+ model_info_table_matches <-
123+ vctrs :: vec_slice(model_info_table_matches ,
124+ model_info_table_matches $ mode == mode )
125+ }
126+
127+
128+ if (vctrs :: vec_size(model_env_matches ) > 0 ||
129+ vctrs :: vec_size(model_info_table_matches ) > 0 ) {
130+ return (TRUE )
131+ }
117132
118- return (nrow( possibilities ) > 0 )
133+ return (FALSE )
119134}
120135
121136# see ?add_on_exports for more information on usage
0 commit comments