R/helper-functions.R

#nocov start
# Predicates --------------------------------------------------------------
.all_are_non_missing_nor_empty_strings <- function(x){
    return(all(is.character(x)) & all(nchar(x) > 0))
}

.is_a_non_missing_nor_empty_string <- function(x){
    return(length(x) == 1 & is.character(x) & nchar(x) > 0)
}

.are_disjoint_sets <- function(x, y){
    return(length(intersect(x, y)) == 0)
}

.is_positive_and_finite <- function(x){
    return(length(x) == 1 & is.numeric(x) & is.finite(x) & x > 0)
}

# Assertions --------------------------------------------------------------
.assert_is_absolute_path <- function(x){
    stopifnot(fs::is_absolute_path(x))
    return(invisible())
}

.assert_is_a_non_missing_nor_empty_string <- function(x){
    stopifnot(.is_a_non_missing_nor_empty_string(x))
    return(invisible())
}

.assert_is_environment <- function(x){
    stopifnot(is.environment(x))
    return(invisible())
}

.assert_is_positive_and_finite <- function(x){
    stopifnot(.is_positive_and_finite(x))
    return(invisible())
}

# .delete_project_env ----------------------------------------------------------
#
#' @title Delete Project Environment
#' @noRd
#' @export
#' @keywords internal
.delete_project_env <- function() {
    try(get("assign")(x = ".project", value = NULL, envir = .GlobalEnv), silent = TRUE)
    try(detach(".project", character.only = TRUE), silent = TRUE)
    suppressWarnings(rm(.project))

    return(invisible())
}

# .create_project_env -----------------------------------------------------
#
#' @title Create Project Environment
#' @noRd
#' @export
#' @keywords internal
.create_project_env <- function() {
    .delete_project_env()

    get("assign")(x = ".project", value = new.env(), envir = .GlobalEnv)
    get("attach")(.project, name = ".project")

    return(invisible())
}

#nocov end
tidylab/tidylab.deployment documentation built on June 9, 2019, 11:41 a.m.