Nothing
makeTags <- function(text1, text2) {
inputTags <- div(
class = "outer",
tagList(
div(
class = "inner",
a(href="example.com", "`a` ", list(strong(text1), em(p(text2))), " text."),
),
span(
class = "sibling",
"sibling text"
)
)
)
inputTags <- span(list(inputTags, inputTags))
inputTags
}
test_that("error checks", {
expect_error(asSelector("div, span"), "contain `,`")
expect_error(asSelector("div[foo]"), "contain `[`", fixed = TRUE)
expect_error(asSelector("div:text"), "Pseudo CSS selectors")
})
test_that("selector parses string", {
selector <- asSelector("h1#myId-value.class-name .child-class#child-id_value")
expect_equal(
format(selector),
"h1#myId-value.class-name #child-id_value.child-class"
)
})
test_that("selector parses valid names", {
verbose <- FALSE
wrapped_expect_equal <- function (object, expected, label) {
if (verbose) message(label)
expect_equal(object, expected, label = label)
}
valid_names <- list(
single_character = "a",
single_CHARACTER = "A",
multiple_characters = "abc",
multiple_cHaRaCtErS = "aBcD",
just_an_underscore = "_",
starts_with_an_underscore = "_abc",
contains_underscore = "a_abc",
contains_hyphen_and_underscore = "a_abc-def"
)
# check elements parse
for (key in names(valid_names)) {
this_time <- valid_names[[key]]
wrapped_expect_equal(
format(asSelector(this_time)),
this_time,
label = paste0("checking element ", key, " with content ", this_time)
)
}
# check ids parse
for (key in names(valid_names)) {
this_time <- paste0("#", valid_names[[key]])
wrapped_expect_equal(
format(asSelector(this_time)),
this_time,
label = paste0("checking id ", key, " with content ", this_time)
)
}
# check classes parse
for (key in names(valid_names)) {
this_time <- paste0(".", valid_names[[key]])
wrapped_expect_equal(
format(asSelector(this_time)),
this_time,
label = paste0("checking class name ", key, " with content ", this_time)
)
}
# check compounds parse
for (element_key in names(valid_names)) {
for (id_key in names(valid_names)) {
for (class_key_1 in names(valid_names)) {
for (class_key_2 in names(valid_names)) {
this_time <- paste0(
valid_names[[element_key]],
"#", valid_names[[id_key]],
".", valid_names[[class_key_1]],
".", valid_names[[class_key_2]]
)
wrapped_expect_equal(
format(asSelector(this_time)),
this_time,
label = paste0("checking compound element ", paste(element_key, id_key, class_key_1, class_key_2, sep="|"), " with content ", this_time)
)
reordered_this_time <- paste0(
valid_names[[element_key]],
".", valid_names[[class_key_1]],
"#", valid_names[[id_key]],
".", valid_names[[class_key_2]]
)
wrapped_expect_equal(
format(asSelector(reordered_this_time)),
this_time,
label = paste0("checking reordered compound element ", paste(element_key, id_key, class_key_1, class_key_2, sep="|"), " with content ", reordered_this_time)
)
}
}
}
}
})
test_that("* checks", {
expect_equal(format(asSelector(" * ")), "*")
expect_equal(format(asSelector(" *.class-name")), ".class-name")
expect_s3_class(asSelector(" * "), selectorClass)
})
test_that("> checks", {
expect_error(asSelector("> div"), "first element")
expect_error(asSelector("div >"), "last element")
expect_error(asSelectorList("> div"), "first element")
expect_error(asSelectorList("div >"), "last element")
expect_equal(format(asSelector("div>span")), "div > span")
expect_equal(format(asSelector("div>>span")), "div > * > span")
})
# x <- div(class = "foo", "text 1",
# div(class = "bar", "text 2"),
# div(class = "bar", "text 3",
# span("more text")
# )
# )
# y <- x
# x <- x[1:length(x)]
# mutate_in_place(x)
# x %>% find(".bar", function(item) { toupper(x$children); item })
# y <- x %>% el_find(".bar") %>% el_find(".x") %>% el_mutate(function(x) toupper(x$children))
# x %>% find(".bar") %>% addClass("abc")
# x %>% find(".bar") %>% removeClass("abc")
# x %>% find(".bar") %>% attr(`data-x` = 123)
# x %>% find(".bar") %>% css(color = "red")
# actionButton("x", "X") %>% removeClass("btn-default") %>% addClass("btn-primary")
# x <- actionButton("x", "X")
# x$attribs$class <- sub("btn-default", "btn-primary", x$attribs$class)
# removeClass.shiny.tag <- function(x, class) {
# ...
# }
# x <- div(
# actionButton("x", "X")
# )
# # Selection types:
# # - tags
# # - classes
# # - ID
# # - descendent ".btn .x"
# # Future:
# # - direct child ".btn > .x"
# #
# # Tag functions:
# # - delay execution, wrap them somehow
# # - need to know we have a way forward
# x %>% el_select(".btn") %>% el_remove_class("btn-default") %>% el_add_class("btn-primary")
# x %>% find(".btn") %>% { . %>% removeClass("btn") %>% addClass("btn-primary") }
# x$select(".btn")$removeClass("btn-default")$addClass("btn-primary")
# `$.shiny.tag` <- function(x, name, ...) {
# el_fns[[name]](x, ...)
# }
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.