Tibble - цветная печать элемента юникода - PullRequest
0 голосов
/ 06 декабря 2018

Я хочу, чтобы в некоторых ячейках был напечатан красный крестик ✘.

X <- "\u2718"
redX <- paste0("\033[0;31m", X, "\033[0m")
cat(redX) 

печатает один символ, который я хочу.

tibble::tibble(X) 

работает для цветного символа по умолчанию.

Однако,

tibble::tibble(redX)

дает:

# A tibble: 1 x 1
  redX
  <chr>
1 "\u001b[0;31m✘\u001b[0m"  

Таким образом, цветовое кодирование не распознается.

Использование crayon также явно не работает:

tibble::tibble(intToUtf8(10008)) # works for default color
tibble::tibble(crayon::red(intToUtf8(10008))) # doesn't work for red

Если я использую pillar , я получаю окраску, но Unicode не выходит:

pillar_shaft.character <- function(x, ...){
  out <- pillar::style_na(format(x))
  pillar::new_pillar_shaft_simple(out, align = "right")
}
pillar::pillar_shaft(c("\u2718", intToUtf8(10008)))

Воспроизводимый пример:

redX <- paste0("\033[0;31m", X, "\033[0m")
X <- "\u2718"
cat(redX) # works
cat(X) # works
tibble::tibble(X) # works for default color
tibble::tibble(redX) # doesn't work
tibble::tibble(intToUtf8(10008)) # works for default color
tibble::tibble(crayon::red(intToUtf8(10008))) # doesn't work
pillar_shaft.character <- function(x, ...){
  out <- pillar::style_na(format(x))
  pillar::new_pillar_shaft_simple(out, align = "right")
}
pillar::pillar_shaft(c("\u2718", intToUtf8(10008))) # gives color, but unicode character is not recognized
...