R/init.R

Defines functions init_textanalysis init_stringanalysis switch_backend install_textanalysis install_stringanalysis

Documented in init_stringanalysis init_textanalysis install_stringanalysis install_textanalysis switch_backend

#' Initialise Session
#' 
#' Initialise a session, installs TextAnalysis or StringAnalysis
#' Juia dependency if needed.
#' 
#' @param ... Arguments passed to \link[JuliaCall]{julia_setup}.
#' @param version Whether to install the stable version from the 
#' registry (recommended) or the latest version from github.
#' 
#' @details Some functions might require the \code{latest} Github version.
#' 
#' @section Backends:
#' Two backends are available, 
#' \href{https://github.com/JuliaText/TextAnalysis.jl}{TextAnalysis} and 
#' \href{https://github.com/zgornel/StringAnalysis.jl}{StringAnalysis}. 
#' The former is the original repository while the second is a hard-fork,
#' of the former which is "designed to provide a richer, faster and orthogonal API."
#' 
#' @section Packages:
#' Packages installed by \code{init_textanalysis} are:
#' \itemize{
#'   \item{\code{TextAnalysis}}
#'   \item{\code{Languages}}
#' }
#' 
#' Packages installed by \code{init_stringanalysis} are:
#' \itemize{
#'   \item{\code{StringAnalysis}}
#'   \item{\code{Languages}}
#' }
#' 
#' @return Invisibly returns \code{TRUE} is successful.
#' 
#' @import JuliaCall
#' @import assertthat
#' 
#' @name init
#' @export
init_textanalysis <- function(...){
  julia <- julia_setup(...)
  julia_install_package_if_needed("TextAnalysis")
  julia_install_package_if_needed("Languages")
  julia_library("TextAnalysis")
  cat(crayon::green(cli::symbol$tick), "textanalysis backend initialised.\n")
  options("TEXTANALYSIS_BACKEND" = "textanalysis")
  invisible(TRUE)
}

#' @rdname init
init_stringanalysis <- function(...){
  julia <- julia_setup(...)
  julia_install_package_if_needed("StringAnalysis")
  julia_install_package_if_needed("Languages")
  julia_library("StringAnalysis")
  cat(crayon::green(cli::symbol$tick), "stringanalysis backend initialised.\n")
  options("TEXTANALYSIS_BACKEND" = "stringanalysis")
  invisible(TRUE)
}

#' @rdname init
switch_backend <- function(...){
  backend <- .get_backend()
  assert_that(!is.null(backend), msg = "No backend setup, see `init_*` functions.")
  cat(crayon::red(cli::symbol$cross), " Unloading ", backend, ".\n", sep = "")
  switch(
    backend,
    textanalysis = init_stringanalysis(..., rebuild = TRUE),
    stringanalysis = init_textanalysis(..., rebuild = TRUE)
  )
}

#' @rdname init
#' @export
install_textanalysis <- function(version = c("stable", "latest")){
  version <- match.arg(version)
  pkg <- "TextAnalysis"
  if(version == "latest") pkg <- "https://github.com/JuliaText/TextAnalysis.jl"
  julia_install_package(pkg)
}

#' @rdname init
install_stringanalysis <- function(version = c("stable", "latest")){
  version <- match.arg(version)
  pkg <- "StringAnalysis"
  if(version == "latest") pkg <- "https://github.com/zgornel/StringAnalysis.jl"
  julia_install_package(pkg)
}
news-r/textanalysis documentation built on Nov. 4, 2019, 9:40 p.m.