Как не жестко кодировать атрибуты HTML значений (с пробелами) в R - PullRequest
1 голос
/ 05 мая 2020

Продолжение этого примера . У меня есть функция в R, которая генерирует некоторый код CSS.

CSS <- function(values, colors){
  template <- "
.option[data-value=%s], .item[data-value=%s]{
  background: %s !important;
  color: white !important;
}"
  paste0(
    apply(cbind(values, colors), 1, function(vc){
      sprintf(template, vc[1], vc[1], vc[2])
    }),
    collapse = "\n"
  )
}

Например, CSS(c("a","b","c"), c("red", "green", "blue")) генерирует

.option[data-value=a], .item[data-value=a]{
  background: red !important;
  color: white !important;
}

.option[data-value=b], .item[data-value=b]{
  background: green !important;
  color: white !important;
}

.option[data-value=c], .item[data-value=c]{
  background: blue !important;
  color: white !important;
}

Однако, если мои значения c("a 1","b 2","c 3 3")

, и я выполняю CSS(c("a 1","b 2","c 3 3"), c("red", "green", "blue")), CSS не распознает пробел между каждым элементом для каждого символа в векторе символов. Итак, "a 1" не распознается, он читается как "a", а "b 2" читается как "b" et c.

Я знаю, что мне нужно заключить каждый символ в кавычки, иначе пробел станет просто разделителем атрибутов, а все, что находится после пробелов, будет рассматриваться как атрибуты элемента. Но как мне сделать это в рамках указанной выше функции без необходимости жесткого кодирования?

1 Ответ

2 голосов
/ 05 мая 2020

Попробуйте

  template <- "
.option[data-value='%s'], .item[data-value='%s']{
  background: %s !important;
  color: white !important;
}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...