R/whichJustifier.R

Defines functions whichJustifier.justifierStructured whichJustifier.justifierIdRef whichJustifier.multipleJustifierElements whichJustifier.singleJustifierElement whichJustifier

whichJustifier <- function(x) {
  if (inherits(x, 'justifier')) {
    UseMethod("whichJustifier");
  } else {
    stop("You can only check what justifier objects are, but the object ",
         "you passed ('", deparse(substitute(x)),
         "') has class(es) ", vecTxtQ(class(x)), ".");
  }
}

#' @export
#' @method whichJustifier singleJustifierElement
whichJustifier.singleJustifierElement <- function(x) {
  res <- intersect(class(x), specificJustifierClasses);
  if (length(res) == 0) {
    return(NULL);
  } else {
    return(res);
  }
}

#' @export
#' @method whichJustifier multipleJustifierElements
whichJustifier.multipleJustifierElements <- function(x) {
  res <-
    unlist(
      lapply(
        x,
        whichJustifier
      )
    );
  uniqueRes <- unique(res);
  if (length(uniqueRes) == 1) {
    return(uniqueRes);
  } else {
    stop("You passed different justifier elements: ",
         vecTxtQ(uniqueRes), ".");
  }
}

#' @export
#' @method whichJustifier justifierIdRef
whichJustifier.justifierIdRef <- function(x) {
  res <- intersect(class(x), specificJustifierClasses);
  if (length(res) == 0) {
    return(NULL);
  } else {
    return(res);
  }
}

#' @export
#' @method whichJustifier justifierStructured
whichJustifier.justifierStructured <- function(x) {
  res <- intersect(class(x), specificJustifierClasses);
  if (length(res) == 0) {
    return(NULL);
  } else {
    return(res);
  }
}

Try the justifier package in your browser

Any scripts or data that you put into this service are public.

justifier documentation built on March 7, 2023, 6:59 p.m.