Skip to content

Consider adding tagHasClass() #390

@daattali

Description

@daattali

Similarly to #389 , parsing out the classes of a tag in order to know if it contains a specific class is something I do often. I've seen in some clients code that they also try to do it, but I've seen it implemented wrongly many times (often people do a simple grep search within the classes string, which is incorrect).

I have the following function:

has_class <- function(tag, class) {
  if (!inherits(tag, "shiny.tag")) {
    stop("has_class: `tag` must be a shiny tag")
  }
  if (!nzchar(class)) {
    stop("has_class: `class` must be a non-empty string")
  }
  if (grepl("\\s", class)) {
    stop("has_class: `class` cannot contain any whitespace")
  }
  
  classes <- htmltools::tagGetAttribute(tag, "class")
  if (is.null(classes)) {
    return(FALSE)
  }
  classes <- strsplit(classes, "\\s+")[[1]]
  

Would you accept a PR for this function, or would you prefer not to? I'm also open to changing the behaviour (when to error vs return false / what to do when the class is an empty string / doing less error checking)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions