Skip to content

Commit 2e8b90c

Browse files
author
Ryan Patrick Kyle
committed
more robust parameter handling
1 parent ba7c015 commit 2e8b90c

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

R/dash.R

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -647,11 +647,15 @@ Dash <- R6::R6Class(
647647
}
648648

649649
getServerParam <- function(value, type, default) {
650+
if (type %in% c("double", "integer") && value < 0)
651+
return(default)
650652
if (!is.null(value) && toupper(value) %in% c("TRUE", "FALSE"))
651653
value <- as.logical(toupper(value))
652-
if (type == "numeric")
653-
value <- as.numeric(value)
654-
if (value != "" && length(value) != 0 && mode(value) == type && !is.na(value)) {
654+
if (type == "integer")
655+
value <- as.integer(value)
656+
if (type == "double")
657+
value <- as.double(value)
658+
if (value != "" && length(value) != 0 && typeof(value) == type && !is.na(value)) {
655659
return(value)
656660
} else {
657661
return(default)
@@ -662,7 +666,7 @@ Dash <- R6::R6Class(
662666
private$debug <- debug
663667

664668
self$server$host <- getServerParam(host, "character", "127.0.0.1")
665-
self$server$port <- getServerParam(as.integer(port), "numeric", 8050)
669+
self$server$port <- getServerParam(as.integer(port), "integer", 8050)
666670

667671
dev_tools_ui <- getServerParam(dev_tools_ui, "logical", debug)
668672
dev_tools_props_check <- getServerParam(dev_tools_props_check, "logical", debug)
@@ -686,9 +690,9 @@ Dash <- R6::R6Class(
686690

687691
if (dev_tools_hot_reload) {
688692
hot_reload <- TRUE
689-
hot_reload_interval <- getServerParam(dev_tools_hot_reload_interval, "numeric", 3)
690-
hot_reload_watch_interval <- getServerParam(dev_tools_hot_reload_watch_interval, "numeric", 0.5)
691-
hot_reload_max_retry <- getServerParam(as.integer(dev_tools_hot_reload_max_retry), "numeric", 8)
693+
hot_reload_interval <- getServerParam(dev_tools_hot_reload_interval, "double", 3)
694+
hot_reload_watch_interval <- getServerParam(dev_tools_hot_reload_watch_interval, "double", 0.5)
695+
hot_reload_max_retry <- getServerParam(as.integer(dev_tools_hot_reload_max_retry), "integer", 8)
692696
# convert from seconds to msec as used by js `setInterval`
693697
self$config$hot_reload <- list(interval = hot_reload_watch_interval * 1000, max_retry = hot_reload_max_retry)
694698
} else {

0 commit comments

Comments
 (0)