findInGit-shiny {findInGit} | R Documentation |
Shiny bindings for findInGit
Description
Output and render functions for using findInGit
within Shiny
applications and interactive Rmd documents.
Usage
FIGOutput(outputId, width = "100%", height = "400px")
renderFIG(expr, env = parent.frame(), quoted = FALSE)
Arguments
outputId |
output variable to read from |
width , height |
a valid CSS unit (like |
expr |
an expression that generates a ' |
env |
the environment in which to evaluate |
quoted |
logical, whether |
Value
FIGOutput
returns an output element that can be included in a
Shiny UI definition, and renderFIG
returns a
shiny.render.function
object that can be included in a Shiny
server definition.
Examples
findGit <- Sys.which("git") != ""
if(findGit){
library(findInGit)
library(shiny)
# First, we create a temporary git repo
library(R.utils) # to use the `copyDirectory` function
folder1 <- system.file("htmlwidgets", package = "findInGit")
folder2 <- system.file("htmlwidgets", "lib", package = "findInGit")
tmpDir <- paste0(tempdir(), "_gitrepo")
dir.create(tmpDir)
# set tmpDir as the working directory
cd <- setwd(tmpDir)
# copy folder1 in tmpDir
copyDirectory(folder1, recursive = FALSE)
# initialize git repo
system("git init")
# add all files to git
system("git add -A")
# commit files
system('git commit -m "mycommit1"')
# create a new branch
system("git checkout -b newbranch")
# copy folder2 in tmpDir, under the new branch
copyDirectory(folder2, recursive = FALSE)
# add all files to git
system("git add -A")
# commit files
system('git commit -m "mycommit2"')
# Now let's play with Shiny
onKeyDown <- HTML(
'function onKeyDown(event) {',
' var key = event.which || event.keyCode;',
' if(key === 13) {',
' Shiny.setInputValue(',
' "pattern", event.target.value, {priority: "event"}',
' );',
' }',
'}'
)
ui <- fluidPage(
tags$head(tags$script(onKeyDown)),
br(),
sidebarLayout(
sidebarPanel(
selectInput(
"ext", "Extension",
choices = c("js", "css")
),
tags$div(
class = "form-group shiny-input-container",
tags$label(
class = "control-label",
"Pattern"
),
tags$input(
type = "text",
class = "form-control",
onkeydown = "onKeyDown(event);",
placeholder = "Press Enter when ready"
)
),
checkboxInput(
"wholeWord", "Whole word"
),
checkboxInput(
"ignoreCase", "Ignore case"
)
),
mainPanel(
FIGOutput("results")
)
)
)
Clean <- function(){
setwd(cd)
unlink(tmpDir, recursive = TRUE, force = TRUE)
}
server <- function(input, output){
onSessionEnded(Clean)
output[["results"]] <- renderFIG({
req(input[["pattern"]])
findInGit(
ext = isolate(input[["ext"]]),
pattern = input[["pattern"]],
wholeWord = isolate(input[["wholeWord"]]),
ignoreCase = isolate(input[["ignoreCase"]])
)
})
}
if(interactive()){
shinyApp(ui, server)
}else{
Clean()
}
}
[Package findInGit version 0.1.1 Index]