R/operators.R

#' Operators for charcater vectors
#'
#' Concatenate character vectors using code{" AND ", " OR ", " NOT "} separators. For numeric and integer work as usual but slower.
#' @param lhs Left-hand side
#' @param rhs Right-hand side
#' @name operators

#' @rdname operators
#' @export
"+" = function(lhs, rhs) {
  if (is.character(lhs) || is.character(rhs)) {
    return(paste(lhs, rhs, sep = " AND "))
  } else {
    .Primitive("+")(lhs, rhs)
  }
}

#' @rdname operators
#' @export
"-" = function(lhs, rhs) {
  if (is.character(lhs) || is.character(rhs)) {
    return(paste(lhs, rhs, sep = " NOT "))
  } else {
    .Primitive("-")(lhs, rhs)
  }
}

#' @rdname operators
#' @export
"|" = function(lhs, rhs) {
  if (is.character(lhs) || is.character(rhs)) {
    return(paste(lhs, rhs, sep = " OR "))
  } else {
    .Primitive("|")(lhs, rhs)
  }
}

#' @rdname operators
#' @export
"@" = function(lhs, rhs) {
  if (is.character(lhs) || is.character(rhs)) {
    return(paste0(lhs, "[", rhs, "]"))
  } else {
    .Primitive("@")(lhs, rhs)
  }
}
jchrom/qbuildr documentation built on May 18, 2019, 10:23 p.m.