R/verb.R

Defines functions getVerbList getVerb createVerb

Documented in createVerb getVerb getVerbList

#'verb
#'
#' xAPI Verb object definitions
#' 
#' @name verb
#' @section Description:
#'   The Verb defines the action between an Actor and an Activity.
#' @section Details:
#'   Verbs appear in Statements as Objects consisting of an IRI and a set of display names corresponding to multiple languages or dialects which provide human-readable meanings of the Verb. The table below lists all properties of the Verb Object.
#' @seealso \link{https://github.com/adlnet/xAPI-Spec/blob/master/xAPI-Data.md#verbs}
NULL

#' Creates an xAPI Verb object
#' 
#' @param verb Verb params
#' @param warn Show warnings
#' @param asJSON Returns object as JSON string
#' 
#' @seealso \code{verb}
#' 
#' @return Verb
#' 
#' @examples
#' createVerb(
#'   verb = list(
#'     display = "custom-verb",
#'     id = "https://example.com/xapi/verbs/custom-verb"
#'   )
#' )
#' 
#' @export
createVerb <- function(
  verb = NULL,
  warn = FALSE,
  asJSON = FALSE, ...) {

  if (is.null(verb)) {
    warning("Verb arguments not specified; using default xapi:verb.", call. = FALSE)
    verb <- "experienced"
  }
  
  verb_id <- verb
  verb <- getVerb(verb_id, warn)  # returns -1 if not found
  
  config <- get_locker_config()
  
  lang    <- ifelse(is.null(config), "en-US", config$language)
  
  # Build verb
  # todo: use getVerbDefinition to create this obj structure
  # todo: warn - id should be a valid url
  obj <- structure(
    list(
      id = "",
      display = list()
    ),
    class = "Verb"
  )
  
  obj$id <- ifelse(
    is.double(verb),
    paste0("http://adlnet.gov/expapi/verbs/", verb_id),
    verb$id
  )
  
  obj$display[[lang]] <- ifelse(
    is.double(verb),
    "experienced",
    verb_id
  )
  
  if(asJSON){
    obj <- formatJSON(obj)
  }

  return(obj)
}

#' Get Verb from xAPI Vocabulary
#'  
#' @param verb Name of verb
#' @param warn Show warnings
#' @param asJSON Returns object as JSON string
#' 
#' @return Verb
#' 
#' @export
getVerb <- function(verb = "", warn = FALSE, asJSON = FALSE) {
  
  exists <- if(is.character(verb) & verb != ""){
    exists(verb, verbs) 
  } else {
    if(warn){
      warning("No Verb was provided.")
    }
    FALSE
  }
  
  if (exists & asJSON) {
    return(formatJSON(verbs[[verb]]))
  } else if (exists) {
    return(
      structure(
        verbs[[verb]],
        class = "Verb"
      )
    )
  } else {
    if(warn){
      warning(paste0("Verb '", verb, "' not found in xAPI Vocabulary list."))
    }
    return(-1)
  }
}

#' getVerbList
#' 
#' Returns a list of the default Verbs.
#' 
#' @return vector
#' 
#'@export
getVerbList <- function() {
  return(names(verbs))
}

verbs <- list(
  "abandoned" = list(
    "id" = "https://w3id.org/xapi/adl/verbs/abandoned",
    "display" = list(
      "en-US" = "abandoned",
      "fr-FR" = "a abandonn\u00e9"
    )
  ),
  "answered" = list(
    "id" = "http://adlnet.gov/expapi/verbs/answered",
    "display" = list(
      "de-DE" = "beantwortete",
      "en-US" = "answered",
      "fr-FR" = "a r\u00e9pondu",
      "es-ES" = "contest\u00f3"
    )
  ),
  "asked" = list(
    "id" = "http://adlnet.gov/expapi/verbs/asked",
    "display" = list(
      "de-DE" = "fragte",
      "en-US" = "asked",
      "fr-FR" = "a demand\u00e9",
      "es-ES" = "pregunt\u00f3"
    )
  ),
  "attempted" = list(
    "id" = "http://adlnet.gov/expapi/verbs/attempted",
    "display" = list(
      "de-DE" = "versuchte",
      "en-US" = "attempted",
      "fr-FR" = "a essay\u00e9",
      "es-ES" = "intent\u00f3"
    )
  ),
  "attended" = list(
    "id" = "http://adlnet.gov/expapi/verbs/attended",
    "display" = list(
      "de-DE" = "nahm teil an",
      "en-US" = "attended",
      "fr-FR" = "a suivi",
      "es-ES" = "asisti\u00f3"
    )
  ),
  "commented" = list(
    "id" = "http://adlnet.gov/expapi/verbs/commented",
    "display" = list(
      "de-DE" = "kommentierte",
      "en-US" = "commented",
      "fr-FR" = "a comment\u00e9",
      "es-ES" = "coment\u00f3"
    )
  ),
  "completed" = list(
    "id" = "http://adlnet.gov/expapi/verbs/completed",
    "display" = list(
      "de-DE" = "beendete",
      "en-US" = "completed",
      "fr-FR" = "a termin\u00e9",
      "es-ES" = "complet\u00f3"
    )
  ),
  "exited" = list(
    "id" = "http://adlnet.gov/expapi/verbs/exited",
    "display" = list(
      "de-DE" = "verlie\u00df",
      "en-US" = "exited",
      "fr-FR" = "a quitt\u00e9",
      "es-ES" = "sali\u00f3"
    )
  ),
  "experienced" = list(
    "id" = "http://adlnet.gov/expapi/verbs/experienced",
    "display" = list(
      "de-DE" = "erlebte",
      "en-US" = "experienced",
      "fr-FR" = "a \u00e9prouv\u00e9",
      "es-ES" = "experiment\u00f3"
    )
  ),
  "failed" = list(
    "id" = "http://adlnet.gov/expapi/verbs/failed",
    "display" = list(
      "de-DE" = "verfehlte",
      "en-US" = "failed",
      "fr-FR" = "a \u00e9chou\u00e9",
      "es-ES" = "fracas\u00f3"
    )
  ),
  "imported" = list(
    "id" = "http://adlnet.gov/expapi/verbs/imported",
    "display" = list(
      "de-DE" = "importierte",
      "en-US" = "imported",
      "fr-FR" = "a import\u00e9",
      "es-ES" = "import\u00f3"
    )
  ),
  "initialized" = list(
    "id" = "http://adlnet.gov/expapi/verbs/initialized",
    "display" = list(
      "de-DE" = "initialisierte",
      "en-US" = "initialized",
      "fr-FR" = "a initialis\u00e9",
      "es-ES" = "inicializ\u00f3"
    )
  ),
  "interacted" = list(
    "id" = "http://adlnet.gov/expapi/verbs/interacted",
    "display" = list(
      "de-DE" = "interagierte",
      "en-US" = "interacted",
      "fr-FR" = "a interagi",
      "es-ES" = "interactu\u00f3"
    )
  ),
  "launched" = list(
    "id" = "http://adlnet.gov/expapi/verbs/launched",
    "display" = list(
      "de-DE" = "startete",
      "en-US" = "launched",
      "fr-FR" = "a lanc\u00e9",
      "es-ES" = "lanz\u00f3"
    )
  ),
  "mastered" = list(
    "id" = "http://adlnet.gov/expapi/verbs/mastered",
    "display" = list(
      "de-DE" = "meisterte",
      "en-US" = "mastered",
      "fr-FR" = "a ma\u00eetris\u00e9",
      "es-ES" = "domin\u00f3"
    )
  ),
  "passed" = list(
    "id" = "http://adlnet.gov/expapi/verbs/passed",
    "display" = list(
      "de-DE" = "bestand",
      "en-US" = "passed",
      "fr-FR" = "a r\u00e9ussi",
      "es-ES" = "aprob\u00f3"
    )
  ),
  "preferred" = list(
    "id" = "http://adlnet.gov/expapi/verbs/preferred",
    "display" = list(
      "de-DE" = "bevorzugte",
      "en-US" = "preferred",
      "fr-FR" = "a pr\u00e9f\u00e9r\u00e9",
      "es-ES" = "prefiri\u00f3"
    )
  ),
  "progressed" = list(
    "id" = "http://adlnet.gov/expapi/verbs/progressed",
    "display" = list(
      "de-DE" = "machte Fortschritt mit",
      "en-US" = "progressed",
      "fr-FR" = "a progress\u00e9",
      "es-ES" = "progres\u00f3"
    )
  ),
  "registered" = list(
    "id" = "http://adlnet.gov/expapi/verbs/registered",
    "display" = list(
      "de-DE" = "registrierte",
      "en-US" = "registered",
      "fr-FR" = "a enregistr\u00e9",
      "es-ES" = "registr\u00f3"
    )
  ),
  "responded" = list(
    "id" = "http://adlnet.gov/expapi/verbs/responded",
    "display" = list(
      "de-DE" = "reagierte",
      "en-US" = "responded",
      "fr-FR" = "a r\u00e9pondu",
      "es-ES" = "respondi\u00f3"
    )
  ),
  "resumed" = list(
    "id" = "http://adlnet.gov/expapi/verbs/resumed",
    "display" = list(
      "de-DE" = "setzte fort",
      "en-US" = "resumed",
      "fr-FR" = "a repris",
      "es-ES" = "continu\u00f3"
    )
  ),
  "satisfied" = list(
    "id" = "https://w3id.org/xapi/adl/verbs/satisfied",
    "display" = list(
      "en-US" = "satisfied"
    )
  ),
  "scored" = list(
    "id" = "http://adlnet.gov/expapi/verbs/scored",
    "display" = list(
      "de-DE" = "erreichte",
      "en-US" = "scored",
      "fr-FR" = "a marqu\u00e9",
      "es-ES" = "anot\u00f3"
    )
  ),
  "shared" = list(
    "id" = "http://adlnet.gov/expapi/verbs/shared",
    "display" = list(
      "de-DE" = "teilte",
      "en-US" = "shared",
      "fr-FR" = "a partag\u00e9",
      "es-ES" = "comparti\u00f3"
    )
  ),
  "suspended" = list(
    "id" = "http://adlnet.gov/expapi/verbs/suspended",
    "display" = list(
      "de-DE" = "pausierte",
      "en-US" = "suspended",
      "fr-FR" = "a suspendu",
      "es-ES" = "aplaz\u00f3"
    )
  ),
  "terminated" = list(
    "id" = "http://adlnet.gov/expapi/verbs/terminated",
    "display" = list(
      "de-DE" = "beendete",
      "en-US" = "terminated",
      "fr-FR" = "a termin\u00e9",
      "es-ES" = "termin\u00f3"
    )
  ),
  "voided" = list(
    "id" = "http://adlnet.gov/expapi/verbs/voided",
    "display" = list(
      "de-DE" = "entwertete",
      "en-US" = "voided",
      "fr-FR" = "a annul\u00e9",
      "es-ES" = "anul\u00f3"
    )
  ),
  "waived" = list(
    "id" = "https://w3id.org/xapi/adl/verbs/waived",
    "display" = list(
      "en-US" = "waived"
    )
  )
)
EducationShinyAppTeam/rLocker documentation built on Dec. 17, 2021, 6:22 p.m.