Skip to content

Commit 2d36b8f

Browse files
committed
Constrain names allowed for scaffolded inputs and widgets
1 parent 361e7d2 commit 2d36b8f

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

R/scaffold_input.R

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#'
1717
#' @export
1818
scaffoldReactShinyInput <- function(name, npmPkgs = NULL, edit = interactive()) {
19+
assertNameValid(name)
1920
package <- getPackage()
2021

2122
file <- renderFile(

R/scaffold_utils.R

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,16 @@ getPackage <- function() {
5252
}
5353
read.dcf('DESCRIPTION')[[1,"Package"]]
5454
}
55+
56+
validName <- function(name) {
57+
grepl("^[[:alpha:]]+[[:alnum:]]*$", name)
58+
}
59+
60+
# Constraining names prevents the user from encountering obscure CSS problems
61+
# and JavaScript errors after scaffolding.
62+
assertNameValid <- function(name) {
63+
if (!validName(name)) {
64+
msg <- sprintf("Name '%s' is invalid, names must begin with an alphabetic character and must contain only alphabetic and numeric characters", name)
65+
stop(msg, call. = FALSE)
66+
}
67+
}

R/scaffold_widget.R

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#'
1717
#' @export
1818
scaffoldReactWidget <- function(name, npmPkgs = NULL, edit = interactive()){
19+
assertNameValid(name)
1920
package <- getPackage()
2021

2122
addWidgetConstructor(name, package, edit)

0 commit comments

Comments
 (0)