diff --git a/NAMESPACE b/NAMESPACE index 5373150e1..f822a3885 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -113,6 +113,7 @@ import(lifecycle) import(rlang) importFrom(fansi,strip_sgr) importFrom(fansi,substr_ctl) +importFrom(utf8,utf8_format) importFrom(utf8,utf8_width) importFrom(utils,head) importFrom(utils,str) diff --git a/R/extent.R b/R/extent.R index 992fca4cd..c4e2e3ddb 100644 --- a/R/extent.R +++ b/R/extent.R @@ -6,7 +6,7 @@ #' @param x A character vector. #' @export #' @importFrom fansi strip_sgr -#' @importFrom utf8 utf8_width +#' @importFrom utf8 utf8_width utf8_format #' @examples #' get_extent(c("abc", "de")) #' get_extent("\u904b\u6c23") @@ -48,14 +48,7 @@ align <- function(x, width = NULL, align = c("left", "right")) { "!!!!!DEBUG align(`v(x)`, `v(class(x))`)" align <- match.arg(align) - extent <- get_extent(x) - if (is.null(width)) { - width <- max(extent) - } - spaces <- pmax(width - extent, 0L) - if (align == "left") { - paste0(x, strrep(" ", spaces)) - } else { - paste0(strrep(" ", spaces), x) - } + attributes(x) <- NULL + + utf8_format(x, justify = align, width = width) } diff --git a/R/sigfig.R b/R/sigfig.R index b19844550..085fc9adb 100644 --- a/R/sigfig.R +++ b/R/sigfig.R @@ -294,6 +294,6 @@ format.pillar_shaft_decimal <- function(x, width, ...) { } used_width <- get_max_extent(row) - row <- paste0(strrep(" ", width - used_width), row) + row <- paste0(strrep(" ", pmax(width - used_width, 0)), row) new_ornament(row, width = width, align = "right") }