Nothing
#' @export
#' @importFrom zip zip
#' @title compress a folder
#' @description compress a folder to a target file. The
#' function returns the complete path to target file.
#' @param folder folder to compress
#' @param target path of the archive to create
#' @keywords internal
pack_folder <- function( folder, target ){
target <- absolute_path(target)
dir_fi <- dirname(target)
if( !file.exists(dir_fi) ){
stop("directory ", shQuote(dir_fi), " does not exist.", call. = FALSE)
} else if( file.access(dir_fi) < 0 ){
stop("can not write to directory ", shQuote(dir_fi), call. = FALSE)
} else if( file.exists(target) && file.access(target) < 0 ){
stop(shQuote(target), " already exists and is not writable", call. = FALSE)
} else if( !file.exists(target) ){
old_warn <- getOption("warn")
options(warn = -1)
x <- tryCatch({cat("", file = target);TRUE}, error = function(e) FALSE, finally = unlink(target, force = TRUE) )
options(warn = old_warn)
if( !x )
stop(shQuote(target), " cannot be written, please check your permissions.", call. = FALSE)
}
curr_wd <- getwd()
setwd(folder)
tryCatch(
zip::zipr(zipfile = target, include_directories = FALSE,
files = list.files(path = ".", all.files = FALSE), recurse = TRUE)
, error = function(e) {
stop("Could not write ", shQuote(target), " [", e$message, "]")
},
finally = {
setwd(curr_wd)
})
target
}
#' @export
#' @importFrom zip unzip
#' @title Extract files from a zip file
#' @description Extract files from a zip file to a folder. The
#' function returns the complete path to destination folder.
#' @param file path of the archive to unzip
#' @param folder folder to create
#' @keywords internal
unpack_folder <- function(file, folder){
stopifnot(file.exists(file))
file_type <- gsub("(.*)(\\.[a-zA-Z0-0]+)$", "\\2", file)
# force deletion if already existing
unlink(folder, recursive = TRUE, force = TRUE)
if( l10n_info()$`UTF-8` ){
zip::unzip( zipfile = file, exdir = folder )
} else {
officer_wd_folder <- getOption("officer_wd_folder")
if(is.null(officer_wd_folder) || !dir.exists(officer_wd_folder)){
officer_wd_folder <- tempdir()
}
# unable to unzip a file with accent when on windows
newfile <- tempfile(tmpdir = officer_wd_folder, fileext = file_type)
file.copy(from = file, to = newfile)
zip::unzip( zipfile = newfile, exdir = folder )
unlink(newfile, force = TRUE)
}
absolute_path(folder)
}
absolute_path <- function(x){
if (length(x) != 1L)
stop("'x' must be a single character string")
epath <- path.expand(x)
if( file.exists(epath)){
epath <- normalizePath(epath, "/", mustWork = TRUE)
} else {
if( !dir.exists(dirname(epath)) ){
stop("directory of ", x, " does not exist.", call. = FALSE)
}
cat("", file = epath)
epath <- normalizePath(epath, "/", mustWork = TRUE)
unlink(epath)
}
epath
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.