From bde86049f5a828436c0d62c370bd41ee6199b8df Mon Sep 17 00:00:00 2001 From: seankross Date: Thu, 17 Dec 2015 17:44:41 -0500 Subject: [PATCH] added install_course --- .travis.yml | 25 +++--- DESCRIPTION | 12 +-- LICENSE | 2 + NAMESPACE | 6 +- R/answerTests2.R | 2 +- R/install_course.R | 125 +++++++++++++++++++++++++---- R/menu.R | 2 +- R/options.R | 115 ++++---------------------- R/rmatch_calls.R | 18 ++--- R/swirl.R | 19 ----- R/zzz.R | 7 -- man/.Rapp.history | 0 man/AnswerTests.Rd | 54 ++++++------- man/InstallCourses.Rd | 26 +++--- man/any_of_exprs.Rd | 18 ++--- man/bye.Rd | 2 +- man/delete_progress.Rd | 2 +- man/delete_swirl_option.Rd | 22 ----- man/email_admin.Rd | 2 +- man/expr_creates_var.Rd | 16 ++-- man/expr_identical_to.Rd | 16 ++-- man/expr_is_a.Rd | 18 ++--- man/expr_uses_func.Rd | 16 ++-- man/func_of_newvar_equals.Rd | 16 ++-- man/get_swirl_option.Rd | 21 ----- man/info.Rd | 24 +----- man/install_course.Rd | 40 +++++++++ man/install_course_directory.Rd | 20 ++--- man/install_course_dropbox.Rd | 20 ++--- man/install_course_github.Rd | 20 ++--- man/install_course_google_drive.Rd | 20 ++--- man/install_course_url.Rd | 20 ++--- man/install_course_zip.Rd | 20 ++--- man/install_from_swirl.Rd | 26 +++--- man/is_robust_match.Rd | 4 +- man/main.Rd | 2 +- man/nxt.Rd | 2 +- man/omnitest.Rd | 30 +++---- man/play.Rd | 2 +- man/reset.Rd | 2 +- man/restart.Rd | 2 +- man/rmatch_calls.Rd | 32 ++++---- man/set_swirl_options.Rd | 27 ------- man/skip.Rd | 2 +- man/submit.Rd | 2 +- man/swirl.Rd | 10 +-- man/uninstall_all_courses.Rd | 20 ++--- man/uninstall_course.Rd | 20 ++--- man/val_has_length.Rd | 18 ++--- man/val_matches.Rd | 18 ++--- man/var_is_a.Rd | 16 ++-- man/zip_course.Rd | 20 ++--- 52 files changed, 464 insertions(+), 537 deletions(-) create mode 100644 LICENSE delete mode 100644 man/.Rapp.history delete mode 100644 man/delete_swirl_option.Rd delete mode 100644 man/get_swirl_option.Rd create mode 100644 man/install_course.Rd delete mode 100644 man/set_swirl_options.Rd diff --git a/.travis.yml b/.travis.yml index f804ef8..69c83f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,14 @@ -# Sample .travis.yml for R projects from https://github.com/craigcitro/r-travis +language: r +warnings_are_errors: true +sudo: required -language: c +env: + global: + - CRAN: http://cran.rstudio.com -before_install: - - curl -OL http://raw.github.com/craigcitro/r-travis/master/scripts/travis-tool.sh - - chmod 755 ./travis-tool.sh - - ./travis-tool.sh bootstrap - -install: - - ./travis-tool.sh install_deps - -script: ./travis-tool.sh run_tests - -on_failure: - - ./travis-tool.sh dump_logs +before_install: echo "options(repos = c(CRAN='http://cran.rstudio.com'))" > ~/.Rprofile notifications: email: - on_success: change - on_failure: change + on_success: always + on_failure: always diff --git a/DESCRIPTION b/DESCRIPTION index fa7562a..576ff63 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -4,15 +4,15 @@ Description: swirl turns the R console into an interactive learning environment. Users receive immediate feedback as they are guided through self-paced lessons in data science and R programming. URL: http://swirlstats.com -Version: 2.3.1 -License: MIT +Version: 2.3.1.9000 +License: MIT + file LICENSE Authors@R: c( - person("Nick", "Carchedi", email = "nick.carchedi@gmail.com", role = c("aut", "cre")), + person("Sean", "Kross", email = "sean@seankross.com", role = c("aut", "cre")), + person("Nick", "Carchedi", role = "aut"), person("Bill", "Bauer", role = "aut"), person("Gina", "Grdina", role = "aut"), - person("Sean", "Kross", role = "aut"), person("Filip", "Schouwenaars", role = "ctb"), - person("Alexandre", "LĂ©onard", role = "ctb") + person("Wush", "Wu", role = "ctb") ) Depends: R (>= 3.0.2) @@ -25,4 +25,6 @@ Imports: digest, tools, rappdirs +Encoding: UTF-8 Roxygen: list(wrap = FALSE) +RoxygenNote: 5.0.1 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1599cc9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,2 @@ +YEAR: 2015 +COPYRIGHT HOLDER: Team swirl \ No newline at end of file diff --git a/NAMESPACE b/NAMESPACE index 482f2d2..4b6b257 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,11 +1,10 @@ -# Generated by roxygen2 (4.1.1): do not edit by hand +# Generated by roxygen2: do not edit by hand export(bye) export(delete_progress) -export(delete_swirl_option) export(email_admin) -export(get_swirl_option) export(info) +export(install_course) export(install_course_directory) export(install_course_dropbox) export(install_course_github) @@ -20,7 +19,6 @@ export(play) export(reset) export(restart) export(rmatch_calls) -export(set_swirl_options) export(skip) export(submit) export(swirl) diff --git a/R/answerTests2.R b/R/answerTests2.R index 75b01a5..8f32037 100644 --- a/R/answerTests2.R +++ b/R/answerTests2.R @@ -160,7 +160,7 @@ NULL #' # In this case, if the user enters sd(x)*sd(x) the test will fail. #' #' } -#' @family AnswerTests +#' @family AnswerTests omnitest <- function(correctExpr=NULL, correctVal=NULL, strict=FALSE, eval_for_class=as.logical(NA)){ e <- get("e", parent.frame()) # Trivial case diff --git a/R/install_course.R b/R/install_course.R index 3f8726d..3d4ab19 100644 --- a/R/install_course.R +++ b/R/install_course.R @@ -21,6 +21,64 @@ #' @family InstallCourses NULL +#' Install a course from The swirl Course Network or install a course from a +#' local .swc file. +#' +#' @description +#' Version 2.4 of swirl introduces a new, simple, and fast way of installing +#' courses in the form of \code{.swc} files. This function allows a user to grab +#' a \code{.swc} file from The swirl Course Network which is maintained by Team +#' swirl, or the user can use this function to install a local \code{.swc} file. +#' When using this function please only provide an argument for either +#' \code{course_name} or \code{swc_path}, never both. +#' +#' @param course_name The name of the course you wish to install. +#' @param swc_path The path to a local \code{.swc} file. By default this +#' argument defaults to \code{file.choose()} so the user can select the file using +#' their mouse. +#' @importFrom httr GET progress content +#' @export +#' @examples +#' \dontrun{ +#' +#' # Install the latest version of Team swirl's R Programming course. +#' install_course("R Programming") +#' +#' # Install a local .swc file by using your mouse and keyboard to select the +#' # file. +#' install_course() +#' +#' # Install a .swc file from a specific path. +#' install_course(swc_path = file.path("~", "Downloads", "R_Programming.swc")) +#' +#' } +install_course <- function(course_name = NULL, swc_path = NULL){ + if(is.null(course_name) && is.null(swc_path)){ + swc_path <- file.choose() + } else if(!is.null(course_name) && !is.null(swc_path)){ + stop("Please specify a value for either course_name or swc_path but not both.") + } else if(!is.null(swc_path)){ + unpack_course(swc_path, swirl_courses_dir()) + swirl_out("Course installed successfully!", skip_after=TRUE) + } else if(!is.null(swc_path)){ + course_name <- make_pathname(course_name) + url <- paste0("http://swirlstats.com/scn/", course_name, ".swc") + + # Send GET request + response <- GET(url, progress()) + + if(response$status_code != 200){ + stop("It looks like your internet connection is not working.", " ", + "Go to http://swirlstats.com/scn/ and download the .swc file that corresponds to the course you wish to install.", " ", + "After downloading the .swc run install_course() and choose the file you downloaded.") + } + + temp_swc <- tempfile() + writeBin(content(response, "raw"), temp_swc) + unpack_course(temp_swc, swirl_courses_dir()) + swirl_out("Course installed successfully!", skip_after=TRUE) + } +} #' Install a course from the official course repository #' @@ -95,7 +153,7 @@ install_from_swirl <- function(course_name, dev = FALSE, mirror = "github"){ response <- GET(url, progress()) # Construct path to Courses - path <- file.path(get_swirl_option("courses_dir"), "temp.zip") + path <- file.path(("courses_dir"), "temp.zip") # Write the response as a zip writeBin(content(response, "raw"), path) @@ -116,12 +174,12 @@ install_from_swirl <- function(course_name, dev = FALSE, mirror = "github"){ } # Extract - unzip(path, exdir=get_swirl_option("courses_dir"), files=unzip_list) + unzip(path, exdir=swirl_courses_dir(), files=unzip_list) # Copy files from unzipped directory into Courses - top_dir <- file.path(get_swirl_option("courses_dir"), sort(dirname(unzip_list))[1]) + top_dir <- file.path(swirl_courses_dir(), sort(dirname(unzip_list))[1]) dirs_to_copy <- list.files(top_dir, full.names=TRUE) - if(file.copy(dirs_to_copy, get_swirl_option("courses_dir"), recursive=TRUE)){ + if(file.copy(dirs_to_copy, swirl_courses_dir(), recursive=TRUE)){ swirl_out("Course installed successfully!", skip_after=TRUE) } else { swirl_out("Course installation failed.", skip_after=TRUE) @@ -131,7 +189,7 @@ install_from_swirl <- function(course_name, dev = FALSE, mirror = "github"){ unlink(top_dir, recursive=TRUE, force=TRUE) # If __MACOSX exists, delete it. - unlink(file.path(get_swirl_option("courses_dir"), "__MACOSX"), recursive=TRUE, force=TRUE) + unlink(file.path(swirl_courses_dir(), "__MACOSX"), recursive=TRUE, force=TRUE) # Delete temp.zip unlink(path, force=TRUE) @@ -155,6 +213,7 @@ install_from_swirl <- function(course_name, dev = FALSE, mirror = "github"){ #' } #' @family InstallCourses zip_course <- function(path, dest=NULL){ + .Deprecated("swirlify::pack_course") # Cleanse the path of the trailing slash path <- sub("/$", "", path) @@ -205,7 +264,7 @@ zip_course <- function(path, dest=NULL){ #' } #' @family InstallCourses uninstall_course <- function(course_name){ - path <- file.path(get_swirl_option("courses_dir"), make_pathname(course_name)) + path <- file.path(swirl_courses_dir(), make_pathname(course_name)) if(file.exists(path)){ unlink(path, recursive=TRUE, force=TRUE) message("Course uninstalled successfully!") @@ -225,7 +284,7 @@ uninstall_course <- function(course_name){ #' } #' @family InstallCourses uninstall_all_courses <- function(){ - path <- get_swirl_option("courses_dir") + path <- swirl_courses_dir() yaml_exists <- file.exists(file.path(path, "suggested_courses.yaml")) if(yaml_exists){ temp_file <- tempfile() @@ -277,10 +336,10 @@ install_course_zip <- function(path, multi=FALSE, which_course=NULL){ # Filter list and extract unzip_list <- Filter(function(x){grepl("/.+/", x)}, file_names) - unzip(path, exdir = get_swirl_option("courses_dir"), files=unzip_list) + unzip(path, exdir = swirl_courses_dir(), files=unzip_list) # Copy files from unzipped directory into Courses - top_dir <- file.path(get_swirl_option("courses_dir"), sort(dirname(unzip_list))[1]) + top_dir <- file.path(swirl_courses_dir(), sort(dirname(unzip_list))[1]) dirs_to_copy <- list.files(top_dir, full.names=TRUE) # Subset desired courses if specified with which_courses arg if(!is.null(which_course)) { @@ -292,7 +351,7 @@ install_course_zip <- function(path, multi=FALSE, which_course=NULL){ } dirs_to_copy <- dirs_to_copy[match_ind] } - if(file.copy(dirs_to_copy, get_swirl_option("courses_dir"), recursive=TRUE)){ + if(file.copy(dirs_to_copy, swirl_courses_dir(), recursive=TRUE)){ swirl_out("Course installed successfully!", skip_after=TRUE) } else { swirl_out("Course installation failed.", skip_after=TRUE) @@ -303,11 +362,11 @@ install_course_zip <- function(path, multi=FALSE, which_course=NULL){ } else { # Unzip file into courses - file_list <- unzip(path, exdir = get_swirl_option("courses_dir")) + file_list <- unzip(path, exdir = swirl_courses_dir()) } # If __MACOSX exists, delete it. - unlink(file.path(get_swirl_option("courses_dir"), "__MACOSX"), recursive=TRUE, force=TRUE) + unlink(file.path(swirl_courses_dir(), "__MACOSX"), recursive=TRUE, force=TRUE) invisible() } @@ -335,7 +394,7 @@ install_course_directory <- function(path){ } # Copy files - if(file.copy(path, get_swirl_option("courses_dir"), recursive=TRUE)){ + if(file.copy(path, swirl_courses_dir(), recursive=TRUE)){ swirl_out("Course installed successfully!", skip_after=TRUE) } else { swirl_out("Course installation failed.", skip_after=TRUE) @@ -423,7 +482,7 @@ install_course_url <- function(url, multi=FALSE){ response <- GET(url, progress()) # Construct path to Courses - path <- file.path(get_swirl_option("courses_dir"), "temp.zip") + path <- file.path(swirl_courses_dir(), "temp.zip") # Write the response as a zip writeBin(content(response, "raw"), path) @@ -444,8 +503,8 @@ install_course_url <- function(url, multi=FALSE){ str_extract(url, perl("[^/]+/{1}zipball")) ) # Rename unzipped directory - file.rename(file.path(get_swirl_option("courses_dir"), old_name), - file.path(get_swirl_option("courses_dir"), course_name)) + file.rename(file.path(swirl_courses_dir(), old_name), + file.path(swirl_courses_dir(), course_name)) } # Delete downloaded zip @@ -453,3 +512,37 @@ install_course_url <- function(url, multi=FALSE){ invisible() } + +unpack_course <- function(file_path, export_path){ + # Remove trailing slash + export_path <- sub(paste0(.Platform$file.sep, "$"), replacement = "", export_path) + + pack <- readRDS(file_path) + course_path <- file.path(export_path, pack$name) + if(file.exists(course_path) && interactive()){ + response <- "" + while(response != "Y"){ + response <- select.list(c("Y", "n"), title = paste(course_path, "already exists.\nAre you sure you want to overwrite it? [Y/n]")) + if(response == "n") return(invisible(course_path)) + } + } + dir.create(course_path) + for(i in 1:length(pack$files)){ + + # Make file's ultimate path + if(length(pack$files[[i]]$path) >= 2){ + lesson_file_path <- Reduce(function(x, y){file.path(x, y)}, pack$files[[i]]$path[2:length(pack$files[[i]]$path)], pack$files[[i]]$path[1]) + } else { + lesson_file_path <- pack$files[[i]]$path + } + file_path <- file.path(course_path, lesson_file_path) + + # If the directory the file needs to be in does not exist, create the dir + if(!file.exists(dirname(file_path))){ + dir.create(dirname(file_path), showWarnings = FALSE, recursive = TRUE) + } + + writeBin(pack$files[[i]]$raw_file, file_path, endian = pack$files[[i]]$endian) + } + invisible(course_path) +} \ No newline at end of file diff --git a/R/menu.R b/R/menu.R index acc60a4..892703d 100644 --- a/R/menu.R +++ b/R/menu.R @@ -380,7 +380,7 @@ order_lessons <- function(current_order, manifest_order) { courseDir.default <- function(e){ # e's only role is to determine the method used - get_swirl_option("courses_dir") + swirl_courses_dir() } progressDir.default <- function(e) { diff --git a/R/options.R b/R/options.R index 9f45f84..ee2e07e 100644 --- a/R/options.R +++ b/R/options.R @@ -1,109 +1,24 @@ -#' Set global options for swirl -#' -#' @description -#' Options can be set for swirl that have an effect on swirl's behavior. Options -#' are specified by the \code{name} of an option that corrsponds to the -#' \code{value} of that option. -#' -#' @param ... Any options can be defined using \code{name = value}. -#' @export -#' @examples -#' \dontrun{ -#' -#' # Install courses to the current directory -#' set_swirl_options(courses_dir = getwd()) -#' -#' # Install courses in the default course directory -#' set_swirl_options(courses_dir = file.path(system.file("Courses", package = "swirl"))) -#' } -set_swirl_options <- function(...){ - args <- list(...) - if(length(args) == 0){ - stop("Please provide arguments so that appropriate options can be set.") - } - - # Create new options frame - args_vector <- unlist(args) - new_opts <- data.frame( - name = names(args_vector), - value = as.vector(args_vector)) - - # If the options file does not exist, create it - # else update the old options file - if(!file.exists(opts_path())){ - write.csv(new_opts, file = opts_path(), row.names = FALSE) - } else { - old_opts <- read.csv(opts_path(), stringsAsFactors = FALSE, - header = TRUE) - new_opts_file <- rbind(new_opts, old_opts[!(old_opts$name %in% new_opts$name),]) - new_opts_file$name <- as.character(new_opts_file$name) - new_opts_file$value <- as.character(new_opts_file$value) - new_opts_file <- new_opts_file[order(new_opts_file$name),] - write.csv(new_opts_file, file = opts_path(), row.names = FALSE) - } - message("Options set successfully!") - invisible() -} - -#' Get a global swirl option -#' -#' @description -#' Returns the \code{value} of a swirl option by providing its \code{name}. -#' -#' @param name The \code{name} of the swirl option. -#' @export -#' @examples -#' \dontrun{ -#' -#' get_swirl_option("courses_dir") -#' } -get_swirl_option <- function(name){ - opts <- read.csv(opts_path(), stringsAsFactors = FALSE, - header = TRUE) - if(name %in% opts$name){ - opts[name == opts$name,]$value - } else { - stop(paste0("Option name '", name, "' not found.")) - } -} - -#' Delete a global swirl option -#' -#' @description -#' Deletes the \code{name} and \code{value} of a swirl option by providing -#' its \code{name}. -#' -#' @param name The \code{name} of the swirl option to be deleted. -#' @export -#' @examples -#' \dontrun{ -#' -#' delete_swirl_option("Brians_phone_number") -#' } -delete_swirl_option <- function(name){ - opts <- read.csv(opts_path(), stringsAsFactors = FALSE, - header = TRUE) - if(name %in% opts$name){ - opts <- opts[name != opts$name,] - write.csv(opts, file = opts_path(), row.names = FALSE) - } else { - stop(paste0("Option name '", name, "' not found.")) - } - message(paste0("Option '", name, "' deleted successfully!")) - invisible() -} - -# Get the options file path +# Get swirl data file path #' @importFrom rappdirs user_data_dir -opts_path <- function(){ +swirl_data_dir <- function(){ # Find user data directory udd <- user_data_dir(appname = "swirl", appauthor = "swirldev", roaming = TRUE) # If the directory doesn't exist, create it if(!file.exists(udd)){ - dir.create(udd, recursive = TRUE) + dir.create(udd, recursive = TRUE, mode = "777") } - # Construct path to swirl options - file.path(udd, "swirl_options.csv") + udd +} + +# Get swirl courses dir +swirl_courses_dir <- function(){ + scd <- getOption("swirl_courses_dir") + + if(is.null(scd)){ + file.path(find.package("swirl"), "Courses") + } else { + scd + } } \ No newline at end of file diff --git a/R/rmatch_calls.R b/R/rmatch_calls.R index 1aae1d7..1de6a23 100644 --- a/R/rmatch_calls.R +++ b/R/rmatch_calls.R @@ -47,24 +47,24 @@ is_robust_match <- function(expr1, expr2, eval_for_class, eval_env=NULL){ #' \dontrun{ #' #' # Function -#' > rmatch_calls(quote(help("print"))) +#' rmatch_calls(quote(help("print"))) #' help(topic = "print", package = NULL, lib.loc = NULL, verbose = getOption("verbose"), #' try.all.packages = getOption("help.try.all.packages"), help_type = getOption("help_type")) #' #' # S3 method with atomic first argument -#' > rmatch_calls(quote(seq(0, 1, by=.5))) +#' rmatch_calls(quote(seq(0, 1, by=.5))) #' seq(from = 0, to = 1, by = 0.5, length.out = NULL, along.with = NULL) #' #' # S3 method with non-atomic first argument, eval_for_class = FALSE (default) -#' > rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01")))) -#' Error in rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01")))) : -#' Illegal expression, seq(as.Date(x = "2014-02-01"), as.Date(x = "2014-03-01")): -#' The first argument, as.Date(x = "2014-02-01"), to S3 method 'seq', is a call, -#' which (as an expression) is not atomic, hence its class can't be determined in an -#' abstract syntax tree without additional information. +#' rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01")))) +#' #Error in rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01")))) : +#' # Illegal expression, seq(as.Date(x = "2014-02-01"), as.Date(x = "2014-03-01")): +#' # The first argument, as.Date(x = "2014-02-01"), to S3 method 'seq', is a call, +#' # which (as an expression) is not atomic, hence its class can't be determined in an +#' # abstract syntax tree without additional information. #' #' # S3 method with non-atomic first argument, eval_for_class = TRUE -#' > rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01"))), eval_for_class=TRUE) +#' rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01"))), eval_for_class=TRUE) #' seq(from = as.Date(x = "2014-02-01"), to = as.Date(x = "2014-03-01"), #' length.out = NULL, along.with = NULL) #' } diff --git a/R/swirl.R b/R/swirl.R index 5d137ec..6507c45 100644 --- a/R/swirl.R +++ b/R/swirl.R @@ -226,25 +226,6 @@ restart <- function(){invisible()} #' Display a list of the special commands, \code{bye()}, \code{play()}, #' \code{nxt()}, \code{skip()}, and \code{info()}. #' @export -#' @examples -#' \dontrun{ -#' -#' | Create a new variable called `z` that contains the number 11. -#' -#' > info() -#' -#' | When you are at the R prompt (>): -#' | -- Typing skip() allows you to skip the current question. -#' | -- Typing play() lets you experiment with R on your own; swirl will ignore what -#' | you do... -#' | -- UNTIL you type nxt() which will regain swirl's attention. -#' | -- Typing bye() causes swirl to exit. Your progress will be saved. -#' | -- Typing info() displays these options again. -#' -#' > bye() -#' -#' | Leaving swirl now. Type swirl() to resume. -#' } info <- function(){ swirl_out("When you are at the R prompt (>):") swirl_out("-- Typing skip() allows you to skip the current question.", skip_before=FALSE) diff --git a/R/zzz.R b/R/zzz.R index 2715a74..f4b4e86 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -1,10 +1,3 @@ -.onLoad <- function(libname, pkgname){ - if(!file.exists(opts_path())){ - set_swirl_options(courses_dir = file.path(system.file("Courses", package = "swirl"))) - } - invisible() -} - .onAttach <- function(...) { if(length(ls(envir=globalenv())) > 0) { packageStartupMessage( diff --git a/man/.Rapp.history b/man/.Rapp.history deleted file mode 100644 index e69de29..0000000 diff --git a/man/AnswerTests.Rd b/man/AnswerTests.Rd index 234ee25..33ebf7e 100644 --- a/man/AnswerTests.Rd +++ b/man/AnswerTests.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{AnswerTests} \alias{AnswerTests} @@ -7,16 +7,16 @@ Answer tests are how swirl determines whether a user has answered a question correctly or not. Each question has one or more answer tests associated with it, all of which must be satisfied in order for -a user's response to be considered correct. As the instructor, you +a user's response to be considered correct. As the instructor, you can specify any combination of our predefined answer tests or create your own custom answer tests to suit your specific needs. This document will explain your options. } \details{ -For each question that you author as part of a swirl lesson, you +For each question that you author as part of a swirl lesson, you must specify exactly one \emph{correct answer}. This is separate and distinct from the answer tests. This does not have to be -the only correct answer, but it must answer the question correctly. +the only correct answer, but it must answer the question correctly. If a user \code{\link{skip}}s your question, this is the answer that will be entered on his or her behalf. @@ -33,19 +33,19 @@ tests come in. You can specify any number of answer tests. If you use more than one, you must separate them with semicolons. If you do not specify any answer tests for a command question, then the default test will be used. The default -test is \code{omnitest(correctExpr='')}, which will -simply check that the user's expression matches the expression that you -provided as a correct answer. +test is \code{omnitest(correctExpr='')}, which will +simply check that the user's expression matches the expression that you +provided as a correct answer. In many cases, the default answer test will provide sufficient vetting of a user's response to a command question. While it is somewhat restrictive -in the sense that it requires an exact match of expressions (ignoring +in the sense that it requires an exact match of expressions (ignoring whitespace), it is liberating to the course author for two reasons. \enumerate{ \item It allows for fast prototyping of content. As you're developing content, you may find that determining how to test for correctness - distracts you from the message you're trying to communicate. - \item You don't have to worry about what happens if the user enters + distracts you from the message you're trying to communicate. + \item You don't have to worry about what happens if the user enters an incorrect response, but is allowed to proceed because of an oversight in the answer tests. Since swirl sessions are continuous, accepting an incorrect answer early in a lesson can cause problems later on. By @@ -53,8 +53,8 @@ whitespace), it is liberating to the course author for two reasons. exact match of expressions and hence not allowing the user to advance until you are certain they've entered the correct response. } - -It's important to keep in mind that as your content matures, you can always + +It's important to keep in mind that as your content matures, you can always go back and make your answer testing strategy more elaborate. The main benefit of using tests other than the default is that the user will not be required to enter an expression exactly the way you've specified it. He or @@ -96,22 +96,22 @@ are using the swirlify authoring tool, then a file called \code{customTests.R} (case-sensitive) is automatically created in the lesson directory. If it's not there already, you can create the file manually. -In this file, you can write your own answer tests. These answer tests are -then available to you just the same as any of the standard tests. However, -the scope of a custom answer test is limited to the lesson within which +In this file, you can write your own answer tests. These answer tests are +then available to you just the same as any of the standard tests. However, +the scope of a custom answer test is limited to the lesson within which you've defined it. -Each custom answer test is simply an R function that follows a few +Each custom answer test is simply an R function that follows a few basic rules: \enumerate{ \item Give the function a distinct name that will help you remember what is does (e.g. \code{creates_matrix_with_n_rows}). - \item The first line of the function body is - \code{e <- get("e", parent.frame())}, which gives you access to the + \item The first line of the function body is + \code{e <- get("e", parent.frame())}, which gives you access to the environment \code{e}. Any important information, such as the expression typed by the user, will be available to you through \code{e}. - \item Access the expression entered by the user with \code{e$expr} and - the value of the expression with \code{e$val}. + \item Access the expression entered by the user with \code{e$expr} and + the value of the expression with \code{e$val}. Note that \code{e$expr} comes in the form of an unevaluated R \code{\link{expression}}. \item The function returns \code{TRUE} if the test is passed and @@ -120,12 +120,12 @@ basic rules: } } \seealso{ -Other AnswerTests: \code{\link{any_of_exprs}}; - \code{\link{expr_creates_var}}; - \code{\link{expr_identical_to}}; \code{\link{expr_is_a}}; - \code{\link{expr_uses_func}}; - \code{\link{func_of_newvar_equals}}; - \code{\link{omnitest}}; \code{\link{val_has_length}}; - \code{\link{val_matches}}; \code{\link{var_is_a}} +Other AnswerTests: \code{\link{any_of_exprs}}, + \code{\link{expr_creates_var}}, + \code{\link{expr_identical_to}}, \code{\link{expr_is_a}}, + \code{\link{expr_uses_func}}, + \code{\link{func_of_newvar_equals}}, + \code{\link{omnitest}}, \code{\link{val_has_length}}, + \code{\link{val_matches}}, \code{\link{var_is_a}} } diff --git a/man/InstallCourses.Rd b/man/InstallCourses.Rd index 96ad16c..fa37ce2 100644 --- a/man/InstallCourses.Rd +++ b/man/InstallCourses.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{InstallCourses} \alias{InstallCourses} @@ -6,31 +6,31 @@ \description{ swirl is designed so that anyone can create interactive content and share it with the world or with just a few people. Users can -install courses from a variety of sources using the +install courses from a variety of sources using the functions listed here. Each of these functions has its own help file, which you can consult for more details. } \details{ -If you're just getting started, we recommend using +If you're just getting started, we recommend using \code{\link{install_from_swirl}} to install courses from our official \href{https://github.com/swirldev/swirl_courses}{course repository}. Otherwise, check out the help file for the relevant install function below. -You can uninstall a course from swirl at any time with +You can uninstall a course from swirl at any time with \code{\link{uninstall_course}}. Uninstall all courses with \code{\link{uninstall_all_courses}}. } \seealso{ -Other InstallCourses: \code{\link{install_course_directory}}; - \code{\link{install_course_dropbox}}; - \code{\link{install_course_github}}; - \code{\link{install_course_google_drive}}; - \code{\link{install_course_url}}; - \code{\link{install_course_zip}}; - \code{\link{install_from_swirl}}; - \code{\link{uninstall_all_courses}}; - \code{\link{uninstall_course}}; \code{\link{zip_course}} +Other InstallCourses: \code{\link{install_course_directory}}, + \code{\link{install_course_dropbox}}, + \code{\link{install_course_github}}, + \code{\link{install_course_google_drive}}, + \code{\link{install_course_url}}, + \code{\link{install_course_zip}}, + \code{\link{install_from_swirl}}, + \code{\link{uninstall_all_courses}}, + \code{\link{uninstall_course}}, \code{\link{zip_course}} } diff --git a/man/any_of_exprs.Rd b/man/any_of_exprs.Rd index d3fbe42..abda6dd 100644 --- a/man/any_of_exprs.Rd +++ b/man/any_of_exprs.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{any_of_exprs} \alias{any_of_exprs} @@ -14,7 +14,7 @@ any_of_exprs(...) } \description{ Returns \code{TRUE} if the expression the user has entered -matches any of the expressions given (as character strings) in +matches any of the expressions given (as character strings) in the argument. } \examples{ @@ -25,12 +25,12 @@ any_of_exprs('cor(x, y)', 'cor(y, x)') } } \seealso{ -Other AnswerTests: \code{\link{AnswerTests}}; - \code{\link{expr_creates_var}}; - \code{\link{expr_identical_to}}; \code{\link{expr_is_a}}; - \code{\link{expr_uses_func}}; - \code{\link{func_of_newvar_equals}}; - \code{\link{omnitest}}; \code{\link{val_has_length}}; - \code{\link{val_matches}}; \code{\link{var_is_a}} +Other AnswerTests: \code{\link{AnswerTests}}, + \code{\link{expr_creates_var}}, + \code{\link{expr_identical_to}}, \code{\link{expr_is_a}}, + \code{\link{expr_uses_func}}, + \code{\link{func_of_newvar_equals}}, + \code{\link{omnitest}}, \code{\link{val_has_length}}, + \code{\link{val_matches}}, \code{\link{var_is_a}} } diff --git a/man/bye.Rd b/man/bye.Rd index 2c30df2..f6df8a6 100644 --- a/man/bye.Rd +++ b/man/bye.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/swirl.R \name{bye} \alias{bye} diff --git a/man/delete_progress.Rd b/man/delete_progress.Rd index 4d66cdd..9a46ec8 100644 --- a/man/delete_progress.Rd +++ b/man/delete_progress.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/progress.R \name{delete_progress} \alias{delete_progress} diff --git a/man/delete_swirl_option.Rd b/man/delete_swirl_option.Rd deleted file mode 100644 index deb22fb..0000000 --- a/man/delete_swirl_option.Rd +++ /dev/null @@ -1,22 +0,0 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/options.R -\name{delete_swirl_option} -\alias{delete_swirl_option} -\title{Delete a global swirl option} -\usage{ -delete_swirl_option(name) -} -\arguments{ -\item{name}{The \code{name} of the swirl option to be deleted.} -} -\description{ -Deletes the \code{name} and \code{value} of a swirl option by providing -its \code{name}. -} -\examples{ -\dontrun{ - -delete_swirl_option("Brians_phone_number") -} -} - diff --git a/man/email_admin.Rd b/man/email_admin.Rd index 41e0226..a194352 100644 --- a/man/email_admin.Rd +++ b/man/email_admin.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/email_info.R \name{email_admin} \alias{email_admin} diff --git a/man/expr_creates_var.Rd b/man/expr_creates_var.Rd index 2070dfe..f4178e3 100644 --- a/man/expr_creates_var.Rd +++ b/man/expr_creates_var.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{expr_creates_var} \alias{expr_creates_var} @@ -29,12 +29,12 @@ expr_creates_var('myNum') } } \seealso{ -Other AnswerTests: \code{\link{AnswerTests}}; - \code{\link{any_of_exprs}}; - \code{\link{expr_identical_to}}; \code{\link{expr_is_a}}; - \code{\link{expr_uses_func}}; - \code{\link{func_of_newvar_equals}}; - \code{\link{omnitest}}; \code{\link{val_has_length}}; - \code{\link{val_matches}}; \code{\link{var_is_a}} +Other AnswerTests: \code{\link{AnswerTests}}, + \code{\link{any_of_exprs}}, + \code{\link{expr_identical_to}}, \code{\link{expr_is_a}}, + \code{\link{expr_uses_func}}, + \code{\link{func_of_newvar_equals}}, + \code{\link{omnitest}}, \code{\link{val_has_length}}, + \code{\link{val_matches}}, \code{\link{var_is_a}} } diff --git a/man/expr_identical_to.Rd b/man/expr_identical_to.Rd index 16e4478..3efb3bd 100644 --- a/man/expr_identical_to.Rd +++ b/man/expr_identical_to.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{expr_identical_to} \alias{expr_identical_to} @@ -24,12 +24,12 @@ given as the first argument. } } \seealso{ -Other AnswerTests: \code{\link{AnswerTests}}; - \code{\link{any_of_exprs}}; - \code{\link{expr_creates_var}}; \code{\link{expr_is_a}}; - \code{\link{expr_uses_func}}; - \code{\link{func_of_newvar_equals}}; - \code{\link{omnitest}}; \code{\link{val_has_length}}; - \code{\link{val_matches}}; \code{\link{var_is_a}} +Other AnswerTests: \code{\link{AnswerTests}}, + \code{\link{any_of_exprs}}, + \code{\link{expr_creates_var}}, \code{\link{expr_is_a}}, + \code{\link{expr_uses_func}}, + \code{\link{func_of_newvar_equals}}, + \code{\link{omnitest}}, \code{\link{val_has_length}}, + \code{\link{val_matches}}, \code{\link{var_is_a}} } diff --git a/man/expr_is_a.Rd b/man/expr_is_a.Rd index 86c863a..e42f15d 100644 --- a/man/expr_is_a.Rd +++ b/man/expr_is_a.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{expr_is_a} \alias{expr_is_a} @@ -23,13 +23,13 @@ expr_is_a('<-') } } \seealso{ -Other AnswerTests: \code{\link{AnswerTests}}; - \code{\link{any_of_exprs}}; - \code{\link{expr_creates_var}}; - \code{\link{expr_identical_to}}; - \code{\link{expr_uses_func}}; - \code{\link{func_of_newvar_equals}}; - \code{\link{omnitest}}; \code{\link{val_has_length}}; - \code{\link{val_matches}}; \code{\link{var_is_a}} +Other AnswerTests: \code{\link{AnswerTests}}, + \code{\link{any_of_exprs}}, + \code{\link{expr_creates_var}}, + \code{\link{expr_identical_to}}, + \code{\link{expr_uses_func}}, + \code{\link{func_of_newvar_equals}}, + \code{\link{omnitest}}, \code{\link{val_has_length}}, + \code{\link{val_matches}}, \code{\link{var_is_a}} } diff --git a/man/expr_uses_func.Rd b/man/expr_uses_func.Rd index b47a26a..59abbc8 100644 --- a/man/expr_uses_func.Rd +++ b/man/expr_uses_func.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{expr_uses_func} \alias{expr_uses_func} @@ -24,12 +24,12 @@ expr_uses_func('sd') } } \seealso{ -Other AnswerTests: \code{\link{AnswerTests}}; - \code{\link{any_of_exprs}}; - \code{\link{expr_creates_var}}; - \code{\link{expr_identical_to}}; \code{\link{expr_is_a}}; - \code{\link{func_of_newvar_equals}}; - \code{\link{omnitest}}; \code{\link{val_has_length}}; - \code{\link{val_matches}}; \code{\link{var_is_a}} +Other AnswerTests: \code{\link{AnswerTests}}, + \code{\link{any_of_exprs}}, + \code{\link{expr_creates_var}}, + \code{\link{expr_identical_to}}, \code{\link{expr_is_a}}, + \code{\link{func_of_newvar_equals}}, + \code{\link{omnitest}}, \code{\link{val_has_length}}, + \code{\link{val_matches}}, \code{\link{var_is_a}} } diff --git a/man/func_of_newvar_equals.Rd b/man/func_of_newvar_equals.Rd index 13225a0..c858da1 100644 --- a/man/func_of_newvar_equals.Rd +++ b/man/func_of_newvar_equals.Rd @@ -1,8 +1,8 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{func_of_newvar_equals} \alias{func_of_newvar_equals} -\title{Test the result of a computation applied to a specific (user-named) +\title{Test the result of a computation applied to a specific (user-named) variable created in a previous question.} \usage{ func_of_newvar_equals(correct_expression) @@ -27,12 +27,12 @@ func_of_newvar_equals('mean(newVar)') } } \seealso{ -Other AnswerTests: \code{\link{AnswerTests}}; - \code{\link{any_of_exprs}}; - \code{\link{expr_creates_var}}; - \code{\link{expr_identical_to}}; \code{\link{expr_is_a}}; - \code{\link{expr_uses_func}}; \code{\link{omnitest}}; - \code{\link{val_has_length}}; \code{\link{val_matches}}; +Other AnswerTests: \code{\link{AnswerTests}}, + \code{\link{any_of_exprs}}, + \code{\link{expr_creates_var}}, + \code{\link{expr_identical_to}}, \code{\link{expr_is_a}}, + \code{\link{expr_uses_func}}, \code{\link{omnitest}}, + \code{\link{val_has_length}}, \code{\link{val_matches}}, \code{\link{var_is_a}} } diff --git a/man/get_swirl_option.Rd b/man/get_swirl_option.Rd deleted file mode 100644 index b2c8109..0000000 --- a/man/get_swirl_option.Rd +++ /dev/null @@ -1,21 +0,0 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/options.R -\name{get_swirl_option} -\alias{get_swirl_option} -\title{Get a global swirl option} -\usage{ -get_swirl_option(name) -} -\arguments{ -\item{name}{The \code{name} of the swirl option.} -} -\description{ -Returns the \code{value} of a swirl option by providing its \code{name}. -} -\examples{ -\dontrun{ - -get_swirl_option("courses_dir") -} -} - diff --git a/man/info.Rd b/man/info.Rd index 945ad67..d355aa7 100644 --- a/man/info.Rd +++ b/man/info.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/swirl.R \name{info} \alias{info} @@ -7,27 +7,7 @@ info() } \description{ -Display a list of the special commands, \code{bye()}, \code{play()}, +Display a list of the special commands, \code{bye()}, \code{play()}, \code{nxt()}, \code{skip()}, and \code{info()}. } -\examples{ -\dontrun{ - -| Create a new variable called `z` that contains the number 11. - -> info() - -| When you are at the R prompt (>): -| -- Typing skip() allows you to skip the current question. -| -- Typing play() lets you experiment with R on your own; swirl will ignore what -| you do... -| -- UNTIL you type nxt() which will regain swirl's attention. -| -- Typing bye() causes swirl to exit. Your progress will be saved. -| -- Typing info() displays these options again. - -> bye() - -| Leaving swirl now. Type swirl() to resume. -} -} diff --git a/man/install_course.Rd b/man/install_course.Rd new file mode 100644 index 0000000..03343f1 --- /dev/null +++ b/man/install_course.Rd @@ -0,0 +1,40 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/install_course.R +\name{install_course} +\alias{install_course} +\title{Install a course from The swirl Course Network or install a course from a +local .swc file.} +\usage{ +install_course(course_name = NULL, swc_path = NULL) +} +\arguments{ +\item{course_name}{The name of the course you wish to install.} + +\item{swc_path}{The path to a local \code{.swc} file. By default this +argument defaults to \code{file.choose()} so the user can select the file using +their mouse.} +} +\description{ +Version 2.4 of swirl introduces a new, simple, and fast way of installing +courses in the form of \code{.swc} files. This function allows a user to grab +a \code{.swc} file from The swirl Course Network which is maintained by Team +swirl, or the user can use this function to install a local \code{.swc} file. +When using this function please only provide an argument for either +\code{course_name} or \code{swc_path}, never both. +} +\examples{ +\dontrun{ + +# Install the latest version of Team swirl's R Programming course. +install_course("R Programming") + +# Install a local .swc file by using your mouse and keyboard to select the +# file. +install_course() + +# Install a .swc file from a specific path. +install_course(swc_path = file.path("~", "Downloads", "R_Programming.swc")) + +} +} + diff --git a/man/install_course_directory.Rd b/man/install_course_directory.Rd index d595409..d899599 100644 --- a/man/install_course_directory.Rd +++ b/man/install_course_directory.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{install_course_directory} \alias{install_course_directory} @@ -19,14 +19,14 @@ install_course_directory("~/Desktop/my_course") } } \seealso{ -Other InstallCourses: \code{\link{InstallCourses}}; - \code{\link{install_course_dropbox}}; - \code{\link{install_course_github}}; - \code{\link{install_course_google_drive}}; - \code{\link{install_course_url}}; - \code{\link{install_course_zip}}; - \code{\link{install_from_swirl}}; - \code{\link{uninstall_all_courses}}; - \code{\link{uninstall_course}}; \code{\link{zip_course}} +Other InstallCourses: \code{\link{InstallCourses}}, + \code{\link{install_course_dropbox}}, + \code{\link{install_course_github}}, + \code{\link{install_course_google_drive}}, + \code{\link{install_course_url}}, + \code{\link{install_course_zip}}, + \code{\link{install_from_swirl}}, + \code{\link{uninstall_all_courses}}, + \code{\link{uninstall_course}}, \code{\link{zip_course}} } diff --git a/man/install_course_dropbox.Rd b/man/install_course_dropbox.Rd index 1b9dd67..b70fd2f 100644 --- a/man/install_course_dropbox.Rd +++ b/man/install_course_dropbox.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{install_course_dropbox} \alias{install_course_dropbox} @@ -21,14 +21,14 @@ install_course_dropbox("https://www.dropbox.com/s/xttkmuvu7hh72vu/my_course.zip" } } \seealso{ -Other InstallCourses: \code{\link{InstallCourses}}; - \code{\link{install_course_directory}}; - \code{\link{install_course_github}}; - \code{\link{install_course_google_drive}}; - \code{\link{install_course_url}}; - \code{\link{install_course_zip}}; - \code{\link{install_from_swirl}}; - \code{\link{uninstall_all_courses}}; - \code{\link{uninstall_course}}; \code{\link{zip_course}} +Other InstallCourses: \code{\link{InstallCourses}}, + \code{\link{install_course_directory}}, + \code{\link{install_course_github}}, + \code{\link{install_course_google_drive}}, + \code{\link{install_course_url}}, + \code{\link{install_course_zip}}, + \code{\link{install_from_swirl}}, + \code{\link{uninstall_all_courses}}, + \code{\link{uninstall_course}}, \code{\link{zip_course}} } diff --git a/man/install_course_github.Rd b/man/install_course_github.Rd index eceb24b..e1cd61e 100644 --- a/man/install_course_github.Rd +++ b/man/install_course_github.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{install_course_github} \alias{install_course_github} @@ -27,14 +27,14 @@ install_course_github("jtleek", "Twitter_Map", "geojson") } } \seealso{ -Other InstallCourses: \code{\link{InstallCourses}}; - \code{\link{install_course_directory}}; - \code{\link{install_course_dropbox}}; - \code{\link{install_course_google_drive}}; - \code{\link{install_course_url}}; - \code{\link{install_course_zip}}; - \code{\link{install_from_swirl}}; - \code{\link{uninstall_all_courses}}; - \code{\link{uninstall_course}}; \code{\link{zip_course}} +Other InstallCourses: \code{\link{InstallCourses}}, + \code{\link{install_course_directory}}, + \code{\link{install_course_dropbox}}, + \code{\link{install_course_google_drive}}, + \code{\link{install_course_url}}, + \code{\link{install_course_zip}}, + \code{\link{install_from_swirl}}, + \code{\link{uninstall_all_courses}}, + \code{\link{uninstall_course}}, \code{\link{zip_course}} } diff --git a/man/install_course_google_drive.Rd b/man/install_course_google_drive.Rd index 0691c77..72b345a 100644 --- a/man/install_course_google_drive.Rd +++ b/man/install_course_google_drive.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{install_course_google_drive} \alias{install_course_google_drive} @@ -21,14 +21,14 @@ install_course_google_drive("https://drive.google.com/file/d/F3fveiu873hfjZZj/ed } } \seealso{ -Other InstallCourses: \code{\link{InstallCourses}}; - \code{\link{install_course_directory}}; - \code{\link{install_course_dropbox}}; - \code{\link{install_course_github}}; - \code{\link{install_course_url}}; - \code{\link{install_course_zip}}; - \code{\link{install_from_swirl}}; - \code{\link{uninstall_all_courses}}; - \code{\link{uninstall_course}}; \code{\link{zip_course}} +Other InstallCourses: \code{\link{InstallCourses}}, + \code{\link{install_course_directory}}, + \code{\link{install_course_dropbox}}, + \code{\link{install_course_github}}, + \code{\link{install_course_url}}, + \code{\link{install_course_zip}}, + \code{\link{install_from_swirl}}, + \code{\link{uninstall_all_courses}}, + \code{\link{uninstall_course}}, \code{\link{zip_course}} } diff --git a/man/install_course_url.Rd b/man/install_course_url.Rd index f53abfd..8b59ca4 100644 --- a/man/install_course_url.Rd +++ b/man/install_course_url.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{install_course_url} \alias{install_course_url} @@ -21,14 +21,14 @@ install_course_url("http://www.biostat.jhsph.edu/~rpeng/File_Hash_Course.zip") } } \seealso{ -Other InstallCourses: \code{\link{InstallCourses}}; - \code{\link{install_course_directory}}; - \code{\link{install_course_dropbox}}; - \code{\link{install_course_github}}; - \code{\link{install_course_google_drive}}; - \code{\link{install_course_zip}}; - \code{\link{install_from_swirl}}; - \code{\link{uninstall_all_courses}}; - \code{\link{uninstall_course}}; \code{\link{zip_course}} +Other InstallCourses: \code{\link{InstallCourses}}, + \code{\link{install_course_directory}}, + \code{\link{install_course_dropbox}}, + \code{\link{install_course_github}}, + \code{\link{install_course_google_drive}}, + \code{\link{install_course_zip}}, + \code{\link{install_from_swirl}}, + \code{\link{uninstall_all_courses}}, + \code{\link{uninstall_course}}, \code{\link{zip_course}} } diff --git a/man/install_course_zip.Rd b/man/install_course_zip.Rd index 4c87e24..a7d2859 100644 --- a/man/install_course_zip.Rd +++ b/man/install_course_zip.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{install_course_zip} \alias{install_course_zip} @@ -26,14 +26,14 @@ install_course_zip("~/Downloads/swirl_courses-master.zip", multi=TRUE, } } \seealso{ -Other InstallCourses: \code{\link{InstallCourses}}; - \code{\link{install_course_directory}}; - \code{\link{install_course_dropbox}}; - \code{\link{install_course_github}}; - \code{\link{install_course_google_drive}}; - \code{\link{install_course_url}}; - \code{\link{install_from_swirl}}; - \code{\link{uninstall_all_courses}}; - \code{\link{uninstall_course}}; \code{\link{zip_course}} +Other InstallCourses: \code{\link{InstallCourses}}, + \code{\link{install_course_directory}}, + \code{\link{install_course_dropbox}}, + \code{\link{install_course_github}}, + \code{\link{install_course_google_drive}}, + \code{\link{install_course_url}}, + \code{\link{install_from_swirl}}, + \code{\link{uninstall_all_courses}}, + \code{\link{uninstall_course}}, \code{\link{zip_course}} } diff --git a/man/install_from_swirl.Rd b/man/install_from_swirl.Rd index e527986..089d5b9 100644 --- a/man/install_from_swirl.Rd +++ b/man/install_from_swirl.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{install_from_swirl} \alias{install_from_swirl} @@ -19,14 +19,14 @@ swirl courses at \url{https://github.com/swirldev/swirl_courses}. This function provides the easiest method of installing a course form the repository. -We have another repository at -\url{https://github.com/swirldev/swirl_misc}, where we keep +We have another repository at +\url{https://github.com/swirldev/swirl_misc}, where we keep experimental features and content. The \code{dev} argument allows you to access this repository. Content in the swirl_misc repository is not guaranteed to work. The central repository of swirl courses is mirrored at -\url{https://bitbucket.org/swirldevmirror/swirl_courses}. If you cannot +\url{https://bitbucket.org/swirldevmirror/swirl_courses}. If you cannot access GitHub you can download swirl courses from bitbucket by using the \code{mirror = "bitbucket"} option (see below). } @@ -47,14 +47,14 @@ install_from_swirl("R Programming", mirror = "bitbucket") } } \seealso{ -Other InstallCourses: \code{\link{InstallCourses}}; - \code{\link{install_course_directory}}; - \code{\link{install_course_dropbox}}; - \code{\link{install_course_github}}; - \code{\link{install_course_google_drive}}; - \code{\link{install_course_url}}; - \code{\link{install_course_zip}}; - \code{\link{uninstall_all_courses}}; - \code{\link{uninstall_course}}; \code{\link{zip_course}} +Other InstallCourses: \code{\link{InstallCourses}}, + \code{\link{install_course_directory}}, + \code{\link{install_course_dropbox}}, + \code{\link{install_course_github}}, + \code{\link{install_course_google_drive}}, + \code{\link{install_course_url}}, + \code{\link{install_course_zip}}, + \code{\link{uninstall_all_courses}}, + \code{\link{uninstall_course}}, \code{\link{zip_course}} } diff --git a/man/is_robust_match.Rd b/man/is_robust_match.Rd index 834a688..16705c4 100644 --- a/man/is_robust_match.Rd +++ b/man/is_robust_match.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rmatch_calls.R \name{is_robust_match} \alias{is_robust_match} @@ -25,7 +25,7 @@ test for a match. CAUTION: May raise errors, as in rmatch_calls. } \examples{ \dontrun{ - + expr1 <- quote(print(paste("my_name_is", "mud"))) expr2 <- quote(print(paste("my_name_is", "mud", sep=" "))) err <- try(ans <- is_robust_match(expr1, expr2, eval_for_class=TRUE), silent=TRUE) diff --git a/man/main.Rd b/man/main.Rd index 0afb1a8..f1ea992 100644 --- a/man/main.Rd +++ b/man/main.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/swirl.R \name{main} \alias{main} diff --git a/man/nxt.Rd b/man/nxt.Rd index 84116aa..91c0729 100644 --- a/man/nxt.Rd +++ b/man/nxt.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/swirl.R \name{nxt} \alias{nxt} diff --git a/man/omnitest.Rd b/man/omnitest.Rd index f0ac259..9de069e 100644 --- a/man/omnitest.Rd +++ b/man/omnitest.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{omnitest} \alias{omnitest} @@ -18,7 +18,7 @@ omnitest(correctExpr = NULL, correctVal = NULL, strict = FALSE, } \description{ Omnitest can test for a correct expression, a correct value, -or both. In the case of values it is limited to testing for +or both. In the case of values it is limited to testing for character or numeric vectors of length 1. } \examples{ @@ -27,42 +27,42 @@ character or numeric vectors of length 1. # Test that a user has chosen a correct menu item # omnitest(correctVal='Men in a college dorm.') - + # Test that a user has entered a correct number at the # command line # omnitest(correctVal=19) - + # Test that a user has entered a particular command # omnitest('myVar <- c(3, 5, 7)') - + # Test that a user has entered a command which computes - # a specific value but perhaps in a different manner + # a specific value but perhaps in a different manner # than anticipated # omnitest('sd(x)^2', 5.95) # # If the user enters sd(x)*sd(x), rather than sd(x)^2, a notification # will be issued, but the test will not fail. - + # Test that a user has entered a command which computes # a specific value in a particular way # omnitest('sd(x)^2', 5.95, strict=TRUE) # # In this case, if the user enters sd(x)*sd(x) the test will fail. - + } } \seealso{ -Other AnswerTests: \code{\link{AnswerTests}}; - \code{\link{any_of_exprs}}; - \code{\link{expr_creates_var}}; - \code{\link{expr_identical_to}}; \code{\link{expr_is_a}}; - \code{\link{expr_uses_func}}; - \code{\link{func_of_newvar_equals}}; - \code{\link{val_has_length}}; \code{\link{val_matches}}; +Other AnswerTests: \code{\link{AnswerTests}}, + \code{\link{any_of_exprs}}, + \code{\link{expr_creates_var}}, + \code{\link{expr_identical_to}}, \code{\link{expr_is_a}}, + \code{\link{expr_uses_func}}, + \code{\link{func_of_newvar_equals}}, + \code{\link{val_has_length}}, \code{\link{val_matches}}, \code{\link{var_is_a}} } diff --git a/man/play.Rd b/man/play.Rd index 25a0a24..002b87b 100644 --- a/man/play.Rd +++ b/man/play.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/swirl.R \name{play} \alias{play} diff --git a/man/reset.Rd b/man/reset.Rd index 6b839ce..65feeb2 100644 --- a/man/reset.Rd +++ b/man/reset.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/swirl.R \name{reset} \alias{reset} diff --git a/man/restart.Rd b/man/restart.Rd index fc9a42e..a2babc4 100644 --- a/man/restart.Rd +++ b/man/restart.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/swirl.R \name{restart} \alias{restart} diff --git a/man/rmatch_calls.Rd b/man/rmatch_calls.Rd index 1806cd5..58a2f19 100644 --- a/man/rmatch_calls.Rd +++ b/man/rmatch_calls.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/rmatch_calls.R \name{rmatch_calls} \alias{rmatch_calls} @@ -22,10 +22,10 @@ bottom up, expanding the call to include default values of named formals as appropriate, and applying match.call to the result. Functionality is limited to expressions containing ordinary functions or S3 methods. If parameter eval_for_class has its default value of FALSE, -an error will be raised for any S3 method whose first argument (as an expression) +an error will be raised for any S3 method whose first argument (as an expression) is not atomic. If eval_for_class is TRUE, the first argument will be evaluated to determine its class. Evaluation will take place in the environment given by -parameter eval_env. +parameter eval_env. CAUTION: eval_for_class=TRUE is likely to result in multiple evaluations of the same code. Expressions containing S4 or reference class methods will also raise errors. } @@ -33,26 +33,26 @@ Expressions containing S4 or reference class methods will also raise errors. \dontrun{ # Function -> rmatch_calls(quote(help("print"))) -help(topic = "print", package = NULL, lib.loc = NULL, verbose = getOption("verbose"), +rmatch_calls(quote(help("print"))) +help(topic = "print", package = NULL, lib.loc = NULL, verbose = getOption("verbose"), try.all.packages = getOption("help.try.all.packages"), help_type = getOption("help_type")) # S3 method with atomic first argument -> rmatch_calls(quote(seq(0, 1, by=.5))) +rmatch_calls(quote(seq(0, 1, by=.5))) seq(from = 0, to = 1, by = 0.5, length.out = NULL, along.with = NULL) # S3 method with non-atomic first argument, eval_for_class = FALSE (default) -> rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01")))) -Error in rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01")))) : - Illegal expression, seq(as.Date(x = "2014-02-01"), as.Date(x = "2014-03-01")): - The first argument, as.Date(x = "2014-02-01"), to S3 method 'seq', is a call, - which (as an expression) is not atomic, hence its class can't be determined in an - abstract syntax tree without additional information. - +rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01")))) +#Error in rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01")))) : +# Illegal expression, seq(as.Date(x = "2014-02-01"), as.Date(x = "2014-03-01")): +# The first argument, as.Date(x = "2014-02-01"), to S3 method 'seq', is a call, +# which (as an expression) is not atomic, hence its class can't be determined in an +# abstract syntax tree without additional information. + # S3 method with non-atomic first argument, eval_for_class = TRUE -> rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01"))), eval_for_class=TRUE) -seq(from = as.Date(x = "2014-02-01"), to = as.Date(x = "2014-03-01"), - length.out = NULL, along.with = NULL) +rmatch_calls(quote(seq(as.Date("2014-02-01"), as.Date("2014-03-01"))), eval_for_class=TRUE) +seq(from = as.Date(x = "2014-02-01"), to = as.Date(x = "2014-03-01"), + length.out = NULL, along.with = NULL) } } diff --git a/man/set_swirl_options.Rd b/man/set_swirl_options.Rd deleted file mode 100644 index 2a16bd1..0000000 --- a/man/set_swirl_options.Rd +++ /dev/null @@ -1,27 +0,0 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/options.R -\name{set_swirl_options} -\alias{set_swirl_options} -\title{Set global options for swirl} -\usage{ -set_swirl_options(...) -} -\arguments{ -\item{...}{Any options can be defined using \code{name = value}.} -} -\description{ -Options can be set for swirl that have an effect on swirl's behavior. Options -are specified by the \code{name} of an option that corrsponds to the -\code{value} of that option. -} -\examples{ -\dontrun{ - -# Install courses to the current directory -set_swirl_options(courses_dir = getwd()) - -# Install courses in the default course directory -set_swirl_options(courses_dir = file.path(system.file("Courses", package = "swirl"))) -} -} - diff --git a/man/skip.Rd b/man/skip.Rd index 5a0d278..dec7540 100644 --- a/man/skip.Rd +++ b/man/skip.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/swirl.R \name{skip} \alias{skip} diff --git a/man/submit.Rd b/man/submit.Rd index 3731eb5..2d715e6 100644 --- a/man/submit.Rd +++ b/man/submit.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/swirl.R \name{submit} \alias{submit} diff --git a/man/swirl.Rd b/man/swirl.Rd index 1fde3ac..c8280e0 100644 --- a/man/swirl.Rd +++ b/man/swirl.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/swirl.R \name{swirl} \alias{swirl} @@ -15,7 +15,7 @@ swirl(resume.class = "default", ...) This function presents a choice of course lessons and interactively tutors a user through them. A user may be asked to watch a video, to answer a multiple-choice or fill-in-the-blanks question, or to -enter a command in the R console precisely as if he or she were +enter a command in the R console precisely as if he or she were using R in practice. Emphasis is on the last, interacting with the R console. User responses are tested for correctness and hints are given if appropriate. Progress is automatically saved so that a user @@ -24,11 +24,11 @@ may quit at any time and later resume without losing work. \details{ There are several ways to exit swirl: by typing \code{bye()} while in the R console, by hitting the Esc key while not in the R console, or by -entering 0 from the swirl course menu. swirl will print a goodbye +entering 0 from the swirl course menu. swirl will print a goodbye message whenever it exits. While swirl is in operation, it may be controlled by entering special -commands in the R console. One of the special commands is \code{bye()} +commands in the R console. One of the special commands is \code{bye()} as discussed above. Others are \code{play()}, \code{nxt()}, \code{skip()}, and \code{info()}. The parentheses are important. @@ -37,7 +37,7 @@ interference or commentary from swirl. This can be accomplished by using the special command \code{play()}. swirl will remain in operation, silently, until the special command \code{nxt()} is entered. -The special command \code{skip()} can be used to skip a question if +The special command \code{skip()} can be used to skip a question if necessary. swirl will enter the correct answer and notify the user of the names of any new variables which it may have created in doing so. These may be needed for subsequent questions. diff --git a/man/uninstall_all_courses.Rd b/man/uninstall_all_courses.Rd index 7bb4a49..1879490 100644 --- a/man/uninstall_all_courses.Rd +++ b/man/uninstall_all_courses.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{uninstall_all_courses} \alias{uninstall_all_courses} @@ -16,14 +16,14 @@ uninstall_all_courses() } } \seealso{ -Other InstallCourses: \code{\link{InstallCourses}}; - \code{\link{install_course_directory}}; - \code{\link{install_course_dropbox}}; - \code{\link{install_course_github}}; - \code{\link{install_course_google_drive}}; - \code{\link{install_course_url}}; - \code{\link{install_course_zip}}; - \code{\link{install_from_swirl}}; - \code{\link{uninstall_course}}; \code{\link{zip_course}} +Other InstallCourses: \code{\link{InstallCourses}}, + \code{\link{install_course_directory}}, + \code{\link{install_course_dropbox}}, + \code{\link{install_course_github}}, + \code{\link{install_course_google_drive}}, + \code{\link{install_course_url}}, + \code{\link{install_course_zip}}, + \code{\link{install_from_swirl}}, + \code{\link{uninstall_course}}, \code{\link{zip_course}} } diff --git a/man/uninstall_course.Rd b/man/uninstall_course.Rd index 298b4f7..bd6e85c 100644 --- a/man/uninstall_course.Rd +++ b/man/uninstall_course.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{uninstall_course} \alias{uninstall_course} @@ -19,15 +19,15 @@ uninstall_course("Linear Regression") } } \seealso{ -Other InstallCourses: \code{\link{InstallCourses}}; - \code{\link{install_course_directory}}; - \code{\link{install_course_dropbox}}; - \code{\link{install_course_github}}; - \code{\link{install_course_google_drive}}; - \code{\link{install_course_url}}; - \code{\link{install_course_zip}}; - \code{\link{install_from_swirl}}; - \code{\link{uninstall_all_courses}}; +Other InstallCourses: \code{\link{InstallCourses}}, + \code{\link{install_course_directory}}, + \code{\link{install_course_dropbox}}, + \code{\link{install_course_github}}, + \code{\link{install_course_google_drive}}, + \code{\link{install_course_url}}, + \code{\link{install_course_zip}}, + \code{\link{install_from_swirl}}, + \code{\link{uninstall_all_courses}}, \code{\link{zip_course}} } diff --git a/man/val_has_length.Rd b/man/val_has_length.Rd index 363eb80..9b22956 100644 --- a/man/val_has_length.Rd +++ b/man/val_has_length.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{val_has_length} \alias{val_has_length} @@ -13,7 +13,7 @@ val_has_length(len) \code{TRUE} or \code{FALSE} } \description{ -Test the the \code{\link{length}} of \code{e$val} is that given by the +Test the the \code{\link{length}} of \code{e$val} is that given by the first argument. } \examples{ @@ -24,13 +24,13 @@ val_has_length(10) } } \seealso{ -Other AnswerTests: \code{\link{AnswerTests}}; - \code{\link{any_of_exprs}}; - \code{\link{expr_creates_var}}; - \code{\link{expr_identical_to}}; \code{\link{expr_is_a}}; - \code{\link{expr_uses_func}}; - \code{\link{func_of_newvar_equals}}; - \code{\link{omnitest}}; \code{\link{val_matches}}; +Other AnswerTests: \code{\link{AnswerTests}}, + \code{\link{any_of_exprs}}, + \code{\link{expr_creates_var}}, + \code{\link{expr_identical_to}}, \code{\link{expr_is_a}}, + \code{\link{expr_uses_func}}, + \code{\link{func_of_newvar_equals}}, + \code{\link{omnitest}}, \code{\link{val_matches}}, \code{\link{var_is_a}} } diff --git a/man/val_matches.Rd b/man/val_matches.Rd index 5fad19b..e9b4cff 100644 --- a/man/val_matches.Rd +++ b/man/val_matches.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{val_matches} \alias{val_matches} @@ -19,20 +19,20 @@ expression given as the first argument. \examples{ \dontrun{ # Test that a user has entered a value matching - # '[Cc]ollege [Ss]tudents' or has selected it + # '[Cc]ollege [Ss]tudents' or has selected it # in a multiple choice question. # val_matches('[Cc]ollege [Ss]tudents') } } \seealso{ -Other AnswerTests: \code{\link{AnswerTests}}; - \code{\link{any_of_exprs}}; - \code{\link{expr_creates_var}}; - \code{\link{expr_identical_to}}; \code{\link{expr_is_a}}; - \code{\link{expr_uses_func}}; - \code{\link{func_of_newvar_equals}}; - \code{\link{omnitest}}; \code{\link{val_has_length}}; +Other AnswerTests: \code{\link{AnswerTests}}, + \code{\link{any_of_exprs}}, + \code{\link{expr_creates_var}}, + \code{\link{expr_identical_to}}, \code{\link{expr_is_a}}, + \code{\link{expr_uses_func}}, + \code{\link{func_of_newvar_equals}}, + \code{\link{omnitest}}, \code{\link{val_has_length}}, \code{\link{var_is_a}} } diff --git a/man/var_is_a.Rd b/man/var_is_a.Rd index bbdff07..73b6157 100644 --- a/man/var_is_a.Rd +++ b/man/var_is_a.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/answerTests2.R \name{var_is_a} \alias{var_is_a} @@ -25,13 +25,13 @@ var_is_a('numeric', 'x') } } \seealso{ -Other AnswerTests: \code{\link{AnswerTests}}; - \code{\link{any_of_exprs}}; - \code{\link{expr_creates_var}}; - \code{\link{expr_identical_to}}; \code{\link{expr_is_a}}; - \code{\link{expr_uses_func}}; - \code{\link{func_of_newvar_equals}}; - \code{\link{omnitest}}; \code{\link{val_has_length}}; +Other AnswerTests: \code{\link{AnswerTests}}, + \code{\link{any_of_exprs}}, + \code{\link{expr_creates_var}}, + \code{\link{expr_identical_to}}, \code{\link{expr_is_a}}, + \code{\link{expr_uses_func}}, + \code{\link{func_of_newvar_equals}}, + \code{\link{omnitest}}, \code{\link{val_has_length}}, \code{\link{val_matches}} } diff --git a/man/zip_course.Rd b/man/zip_course.Rd index c81400d..c98a97c 100644 --- a/man/zip_course.Rd +++ b/man/zip_course.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/install_course.R \name{zip_course} \alias{zip_course} @@ -24,15 +24,15 @@ zip_course("~/Desktop/SNA_Tutorial", "~/tutorials") } } \seealso{ -Other InstallCourses: \code{\link{InstallCourses}}; - \code{\link{install_course_directory}}; - \code{\link{install_course_dropbox}}; - \code{\link{install_course_github}}; - \code{\link{install_course_google_drive}}; - \code{\link{install_course_url}}; - \code{\link{install_course_zip}}; - \code{\link{install_from_swirl}}; - \code{\link{uninstall_all_courses}}; +Other InstallCourses: \code{\link{InstallCourses}}, + \code{\link{install_course_directory}}, + \code{\link{install_course_dropbox}}, + \code{\link{install_course_github}}, + \code{\link{install_course_google_drive}}, + \code{\link{install_course_url}}, + \code{\link{install_course_zip}}, + \code{\link{install_from_swirl}}, + \code{\link{uninstall_all_courses}}, \code{\link{uninstall_course}} }