From 892c7480bbba075b2973bc09f1cf57fe31453ef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Cs=C3=A1rdi?= Date: Mon, 4 Oct 2021 14:04:45 +0200 Subject: [PATCH] Add emoji hash Closes #26. --- DESCRIPTION | 2 + NAMESPACE | 2 + R/hash.R | 43 ++++++++++ R/platform-info.R | 16 +++- R/printing.R | 6 +- R/session-info.R | 59 ++++++++++++-- R/sysdata.rda | Bin 0 -> 58898 bytes tools/bad-emoji.R | 203 ++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 319 insertions(+), 12 deletions(-) create mode 100644 R/hash.R create mode 100644 R/sysdata.rda create mode 100644 tools/bad-emoji.R diff --git a/DESCRIPTION b/DESCRIPTION index f9f75f1..75a3f84 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -30,6 +30,8 @@ Description: Query and print information about the current R License: GPL-2 URL: https://github.com/r-lib/sessioninfo#readme BugReports: https://github.com/r-lib/sessioninfo/issues +Depends: + R (>= 2.10) Imports: cli, tools, diff --git a/NAMESPACE b/NAMESPACE index 971546d..225a4be 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -5,10 +5,12 @@ S3method(as.character,packages_info) S3method(as.character,platform_info) S3method(as.character,python_info) S3method(as.character,session_info) +S3method(c,platform_info) S3method(format,external_info) S3method(format,packages_info) S3method(format,platform_info) S3method(format,python_info) +S3method(format,session_info) S3method(print,external_info) S3method(print,packages_info) S3method(print,platform_info) diff --git a/R/hash.R b/R/hash.R new file mode 100644 index 0000000..ec81383 --- /dev/null +++ b/R/hash.R @@ -0,0 +1,43 @@ + +# TODO: this can use cli, once a new version with cli::hash_emoji() is +# release to CRAN + +add_hash <- function(si, size = 3) { + stopifnot(size >= 1, size <= 4) + + orig <- si + # drop the date for hashing + if ("platform" %in% names(si) && "date" %in% names(si$platform)) { + si$platform$date <- NULL + } + + old <- options( + cli.unicode = FALSE, + cli.num_colors = 1, + sessioninfo.emoji = FALSE + ) + on.exit(options(old), add = TRUE) + tmp <- tempfile() + writeLines(format(si), tmp) + on.exit(unlink(tmp), add = TRUE) + + md5 <- tools::md5sum(tmp)[[1]] + md513 <- substr(md5, 1, 13) + mdint <- as.integer(as.hexmode(strsplit(md513, "")[[1]])) + hash <- sum(mdint * 16^(0:12)) + + base <- nrow(emojis) + ehash <- hash %% (base ** size) + digits <- integer() + while (ehash > 0) { + digits <- c(digits, ehash %% base) + ehash <- ehash %/% base + } + digits <- c(digits, rep(0, 10))[1:size] + + nms <- emojis$name[digits + 1] + emo <- emojis$emoji[digits + 1] + + orig$hash <- list(emoji = emo, emo_text = nms) + orig +} diff --git a/R/platform-info.R b/R/platform-info.R index b59e6ff..dcc32e5 100644 --- a/R/platform-info.R +++ b/R/platform-info.R @@ -24,7 +24,7 @@ #' platform_info() platform_info <- function() { - structure(drop_null(list( + as_platform_info(drop_null(list( version = R.version.string, os = os_name(), system = version$system, @@ -36,7 +36,7 @@ platform_info <- function() { date = format(Sys.Date()), rstudio_version = get_rstudio_version(), pandoc_version = get_pandoc_version() - )), class = c("platform_info", "list")) + ))) } get_rstudio_version <- function() { @@ -98,3 +98,15 @@ print.platform_info <- function(x, ...) { as.character.platform_info <- function(x, ...) { format(x, ...) } + +#' @export + +c.platform_info <- function(...) { + as_platform_info(NextMethod()) +} + +as_platform_info <- function(x) { + stopifnot(is.list(x)) + class(x) <- c("platform_info", "list") + x +} diff --git a/R/printing.R b/R/printing.R index b7aae88..456431d 100644 --- a/R/printing.R +++ b/R/printing.R @@ -1,11 +1,11 @@ #' @importFrom cli symbol -rule <- function (..., pad = NULL) { - if (is.null(pad)) pad <- symbol$line +rule <- function (..., pad = NULL, double = FALSE) { + if (is.null(pad)) pad <- if (double) symbol$double_line else symbol$line title <- if (length(list(...))) paste0(" ", ..., " ") else "" - width <- max(cli::console_width() - nchar(title) - 3, 0) + width <- max(cli::console_width() - cli::ansi_nchar(title, "width") - 3, 0) paste(pad, title, paste(rep(pad, width), collapse = ""), sep = "") } diff --git a/R/session-info.R b/R/session-info.R index e8df85f..9310a42 100644 --- a/R/session-info.R +++ b/R/session-info.R @@ -90,6 +90,8 @@ session_info <- function( class = c("session_info", "list") ) + si <- add_hash(si) + if (is_string(to_file)) { writeLines(as.character(si), to_file) invisible(si) @@ -100,24 +102,67 @@ session_info <- function( #' @export -as.character.session_info <- function(x, ...) { - c(if ("platform" %in% names(x)) { - c(rule("Session info"), as.character(x$platform), "") +format.session_info <- function(x, ...) { + + has_platform <- !is.null(x$platform) + + c(if (!"platform" %in% names(x)) { + c(rule(paste("Session info", emo_hash(x)), double = TRUE), text_hash(x)) + }, + if ("platform" %in% names(x)) { + c(rule(paste("Session info", emo_hash(x))), + text_hash(x), + format(x$platform), + "" + ) }, if ("packages" %in% names(x)) { - c(rule("Packages"), as.character(x$packages), "") + c(rule("Packages"), format(x$packages), "") }, if ("external" %in% names(x)) { - c(rule("External software"), as.character(x$external), "") + c(rule("External software"), format(x$external), "") }, if ("python" %in% names(x)) { - c(rule("Python configuration"), as.character(x$python), "") + c(rule("Python configuration"), format(x$python), "") } ) } #' @export +as.character.session_info <- function(x, ...) { + format(x, ...) +} + +has_emoji <- function () { + if (isTRUE(opt <- getOption("sessioninfo.emoji"))) { + TRUE + } else if (identical(opt, FALSE)) { + FALSE + } else if (!cli::is_utf8_output()) { + FALSE + } else { + Sys.info()[["sysname"]] == "Darwin" + } +} + +emo_hash <- function(x) { + if (is.null(x$hash)) return("") + if (has_emoji()) { + paste0(" ", paste(x$hash$emoji, " ", collapse = "")) + } else { + "" + } +} + +text_hash <- function(x) { + if (!is.null(x$hash) && !has_emoji()) { + c(paste0(" hash: ", paste(x$hash$emo_text, collapse = ", ")), "") + } +} + +#' @export + print.session_info <- function(x, ...) { - cat(as.character(x), sep = "\n") + cat(format(x), sep = "\n") } diff --git a/R/sysdata.rda b/R/sysdata.rda new file mode 100644 index 0000000000000000000000000000000000000000..1a857d4dd260c389c4ddebc1ecc47de0d018ab73 GIT binary patch literal 58898 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¨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 Dk<_Ya literal 0 HcmV?d00001 diff --git a/tools/bad-emoji.R b/tools/bad-emoji.R new file mode 100644 index 0000000..deb2dbe --- /dev/null +++ b/tools/bad-emoji.R @@ -0,0 +1,203 @@ +# emoji 0.2.0 +bad <- c( + 11, + 24, + 33, + 34, + 37, + 43:45, + 50, + 67, + 71, + 76, + 86, + 101, + 144:147, + 155, + 157, + 170, + 209:232, + 239:250, + 264:269, + 325:330, + 379:384, + 403:422, + 454:455, + 474:479, + 487:488, + 496, + 545:568, + 605:610, + 617:622, + 629:634, + 641:670, + 695:718, + 725:748, + 755:778, + 785:808, + 815:838, + 845:898, + 905:928, + 935:958, + 965:1000, + 1025:1030, + 1043:1048, + 1061:1072, + seq(1074, 1096, by = 2), + 1097:1102, + 1115:1120, + 1133:1138, + 1151:1156, + 1169:1174, + 1187:1192, + 1205:1210, + 1223:1228, + 1241:1246, + 1259:1270, + seq(1272, 1294, by = 2), + 1295:1300, + 1313:1318, + 1337, + 1360, + 1368:1395, + 1402:1431, + 1438:1467, + 1486:1509, + 1528:1551, + 1558:1581, + 1588:1599, + 1606:1623, + 1642:1647, + 1654:1677, + 1684:1707, + 1714:1737, + 1744:1767, + 1774:1797, + 1804:1827, + 1834:1857, + 1859:1862, + 1864:1868, + 1875:1898, + 1905:1928, + 1935:2072, + 2079:2102, + 2123:2126, + 2133:2156, + 2163:2186, + 2209:2236, + 2243:2521, + 2528:2551, + 2558:2581, + 2588:2611, + 2624:2649, + 2652:2656, + 2658:2662, + 2664:2668, + 2670:2674, + 2678:2682, + 2684:2688, + 2690:2684, + 2696:2700, + 2704:2708, + 2710:2714, + 2716:2720, + 2722:2726, + 2729:2773, + 2775:2825, + 2827:2877, + 2879:2929, + 2931:2975, + 2977:3027, + 3029:3079, + 3081:3131, + 3162, + 3176, + 3179, + 3180, + 3187, + 3197, + 3214, + 3225, + 3229, + 3230, + 3233:3235, + 3253:3255, + 3270, + 3277, + 3283, + 3286, + 3293, + 3294, + 3299, + 3309, + 3322, + 3323, + 3338, + 3341, + 3350, + 3354, + 3355, + 3358, + 3363, + 3367, + 3380, + 3382, + 3387, + 3391, + 3415, + 3433, + 3444, + 3446:3449, + 3456, + 3489, + 3490, + 3516, + 3535, + 3565, + 3574:3576, + 3580, + 3589, + 3596, + 3613, + 3678, + 3778, + 3784, + 3785, + 3788, + 3790, + 3798:3800, + 3819:3821, + 3827, + 3837:3840, + 3849, + 3856, + 3863, + 3892, + 3897, + 3899, + 3908, + 3944, + 3965, + 4041, + 4053, + 4057, + 4059, + 4067, + 4071, + 4074, + 4087:4089, + 4092, + 4093, + 4098, + 4100, + 4103, + 4104, + 4110, + 4112, + 4113, + 4120, + 4124, + 4125, + 4399, + 4436:4441 +)