@@ -10,23 +10,20 @@ possible_engines <- function(object, ...) {
1010 unique(engs $ engine )
1111}
1212
13+ glue_compatible_engines <- function (engine , avail_eng ) {
14+ glue :: glue(
15+ " Available engines are: " ,
16+ glue :: glue_collapse(glue :: glue(" '{avail_eng}'" ), sep = " , " )
17+ )
18+ }
19+
1320check_engine <- function (object ) {
1421 avail_eng <- possible_engines(object )
15- if (is.null(object $ engine )) {
16- object $ engine <- avail_eng [1 ]
17- rlang :: warn(glue :: glue(" `engine` was NULL and updated to be `{object$engine}`" ))
18- } else {
19- if (! is.character(object $ engine ) | length(object $ engine ) != 1 ) {
20- rlang :: abort(" `engine` should be a single character value." )
21- }
22- }
23- if (! (object $ engine %in% avail_eng )) {
24- rlang :: abort(
25- glue :: glue(
26- " Engine '{object$engine}' is not available. Please use one of: " ,
27- glue :: glue_collapse(glue :: glue(" '{avail_eng}'" ), sep = " , " )
28- )
29- )
22+ eng <- object $ engine
23+ if (is.null(eng ) | length(eng ) > 1 ) {
24+ rlang :: abort(glue_compatible_engines(eng , avail_eng ))
25+ } else if (! (eng %in% avail_eng )) {
26+ rlang :: abort(glue_compatible_engines(eng , avail_eng ))
3027 }
3128 object
3229}
@@ -97,7 +94,8 @@ set_engine <- function(object, engine, ...) {
9794 }
9895
9996 if (rlang :: is_missing(engine )) {
100- engine <- NULL
97+ avail_eng <- possible_engines(object )
98+ rlang :: abort(glue_compatible_engines(object $ engine , avail_eng ))
10199 }
102100 object $ engine <- engine
103101 object <- check_engine(object )
0 commit comments