diff --git a/R/knitr-hooks.R b/R/knitr-hooks.R index c7cbe6ad0..0c07e073b 100644 --- a/R/knitr-hooks.R +++ b/R/knitr-hooks.R @@ -317,6 +317,7 @@ install_knitr_hooks <- function() { } else { cap_engine <- knitr_engine(options$engine) + # use logo shipped within learnr pkg (currently none) cap_engine_file <- system.file(file.path("internals", "icons", paste0(cap_engine, ".svg")), package = "learnr") if (file.exists(cap_engine_file)) { as.character(htmltools::div( @@ -324,7 +325,36 @@ install_knitr_hooks <- function() { htmltools::HTML(readLines(cap_engine_file)) )) } else { - paste0(options$engine, " code") + cap_engine_val <- + switch(cap_engine, + "bash" = "Bash", + "c" = "C", + "coffee" = "CoffeeScript", + "cc" = "C++", + "css" = "CSS", + "go" = "Go", + "groovy" = "Groovy", + "haskell" = "Haskell", + "js" = "JavaScript", + "mysql" = "MySQL", + "node" = "Node.js", + "octave" = "Octave", + "psql" = "PostgreSQL", + "python" = "Python", + "r" = "R", + "rcpp" = "Rcpp", + "cpp11" = "cpp11", + "rscript" = "Rscript", + "ruby" = "Ruby", + "perl" = "Perl", + "sass" = "Sass", + "scala" = "Scala", + "scss" = "SCSS", + "sql" = "SQL", + # else, return as the user provided + options$engine + ) + paste0(cap_engine_val, " code") } } ui_options <- list( diff --git a/inst/internals/icons/bash.svg b/inst/internals/icons/bash.svg deleted file mode 100644 index 2fcfa30ce..000000000 --- a/inst/internals/icons/bash.svg +++ /dev/null @@ -1 +0,0 @@ -GNU Bash icon diff --git a/inst/internals/icons/c.svg b/inst/internals/icons/c.svg deleted file mode 100644 index f885ab274..000000000 --- a/inst/internals/icons/c.svg +++ /dev/null @@ -1 +0,0 @@ -C icon diff --git a/inst/internals/icons/cc.svg b/inst/internals/icons/cc.svg deleted file mode 100644 index b69b04363..000000000 --- a/inst/internals/icons/cc.svg +++ /dev/null @@ -1 +0,0 @@ -C++ icon diff --git a/inst/internals/icons/coffee.svg b/inst/internals/icons/coffee.svg deleted file mode 100644 index 95ac015ea..000000000 --- a/inst/internals/icons/coffee.svg +++ /dev/null @@ -1 +0,0 @@ -CoffeeScript icon diff --git a/inst/internals/icons/css.svg b/inst/internals/icons/css.svg deleted file mode 100644 index f1fb087d8..000000000 --- a/inst/internals/icons/css.svg +++ /dev/null @@ -1 +0,0 @@ -CSS3 icon diff --git a/inst/internals/icons/go.svg b/inst/internals/icons/go.svg deleted file mode 100644 index 6ce091065..000000000 --- a/inst/internals/icons/go.svg +++ /dev/null @@ -1 +0,0 @@ -Go icon diff --git a/inst/internals/icons/groovy.svg b/inst/internals/icons/groovy.svg deleted file mode 100644 index 2b9866e9d..000000000 --- a/inst/internals/icons/groovy.svg +++ /dev/null @@ -1 +0,0 @@ -Groovy icon diff --git a/inst/internals/icons/haskell.svg b/inst/internals/icons/haskell.svg deleted file mode 100644 index 0e8bb7485..000000000 --- a/inst/internals/icons/haskell.svg +++ /dev/null @@ -1 +0,0 @@ -Haskell icon diff --git a/inst/internals/icons/js.svg b/inst/internals/icons/js.svg deleted file mode 100644 index e17c3995b..000000000 --- a/inst/internals/icons/js.svg +++ /dev/null @@ -1 +0,0 @@ -JavaScript icon diff --git a/inst/internals/icons/mysql.svg b/inst/internals/icons/mysql.svg deleted file mode 100644 index f33a486be..000000000 --- a/inst/internals/icons/mysql.svg +++ /dev/null @@ -1 +0,0 @@ -MySQL icon diff --git a/inst/internals/icons/node.svg b/inst/internals/icons/node.svg deleted file mode 100644 index c8833dca0..000000000 --- a/inst/internals/icons/node.svg +++ /dev/null @@ -1 +0,0 @@ -Node.js icon diff --git a/inst/internals/icons/octave.svg b/inst/internals/icons/octave.svg deleted file mode 100644 index 26cc1c0b4..000000000 --- a/inst/internals/icons/octave.svg +++ /dev/null @@ -1 +0,0 @@ -Octave icon diff --git a/inst/internals/icons/perl.svg b/inst/internals/icons/perl.svg deleted file mode 100644 index e03599a87..000000000 --- a/inst/internals/icons/perl.svg +++ /dev/null @@ -1 +0,0 @@ -Perl icon diff --git a/inst/internals/icons/psql.svg b/inst/internals/icons/psql.svg deleted file mode 100644 index 0627efdc7..000000000 --- a/inst/internals/icons/psql.svg +++ /dev/null @@ -1 +0,0 @@ -PostgreSQL icon diff --git a/inst/internals/icons/python.svg b/inst/internals/icons/python.svg deleted file mode 100644 index 1a7240853..000000000 --- a/inst/internals/icons/python.svg +++ /dev/null @@ -1 +0,0 @@ -Python icon diff --git a/inst/internals/icons/r.svg b/inst/internals/icons/r.svg deleted file mode 100644 index 49dd11cc2..000000000 --- a/inst/internals/icons/r.svg +++ /dev/null @@ -1 +0,0 @@ -R icon diff --git a/inst/internals/icons/rcpp.svg b/inst/internals/icons/rcpp.svg deleted file mode 100644 index b69b04363..000000000 --- a/inst/internals/icons/rcpp.svg +++ /dev/null @@ -1 +0,0 @@ -C++ icon diff --git a/inst/internals/icons/rscript.svg b/inst/internals/icons/rscript.svg deleted file mode 100644 index d1d6b0452..000000000 --- a/inst/internals/icons/rscript.svg +++ /dev/null @@ -1 +0,0 @@ -RStudio icon diff --git a/inst/internals/icons/ruby.svg b/inst/internals/icons/ruby.svg deleted file mode 100644 index 4c2e0cd55..000000000 --- a/inst/internals/icons/ruby.svg +++ /dev/null @@ -1 +0,0 @@ -Ruby icon diff --git a/inst/internals/icons/sass.svg b/inst/internals/icons/sass.svg deleted file mode 100644 index c16311a03..000000000 --- a/inst/internals/icons/sass.svg +++ /dev/null @@ -1 +0,0 @@ -Sass icon diff --git a/inst/internals/icons/scala.svg b/inst/internals/icons/scala.svg deleted file mode 100644 index 7269551ac..000000000 --- a/inst/internals/icons/scala.svg +++ /dev/null @@ -1 +0,0 @@ -Scala icon diff --git a/inst/internals/icons/scss.svg b/inst/internals/icons/scss.svg deleted file mode 100644 index c16311a03..000000000 --- a/inst/internals/icons/scss.svg +++ /dev/null @@ -1 +0,0 @@ -Sass icon diff --git a/inst/internals/icons/sql.svg b/inst/internals/icons/sql.svg deleted file mode 100644 index c52dafbca..000000000 --- a/inst/internals/icons/sql.svg +++ /dev/null @@ -1 +0,0 @@ -MariaDB icon diff --git a/tools/update-icons.R b/tools/update-icons.R deleted file mode 100644 index 8bd0f3e3c..000000000 --- a/tools/update-icons.R +++ /dev/null @@ -1,100 +0,0 @@ - -local({ - - ## https://bookdown.org/yihui/rmarkdown/language-engines.html - # names(knitr::knit_engines$get()) - ## [1] "awk" "bash" "coffee" - ## [4] "gawk" "groovy" "haskell" - ## [7] "lein" "mysql" "node" - ## [10] "octave" "perl" "psql" - ## [13] "Rscript" "ruby" "sas" - ## [16] "scala" "sed" "sh" - ## [19] "stata" "zsh" "highlight" - ## [22] "Rcpp" "tikz" "dot" - ## [25] "c" "cc" "fortran" - ## [28] "fortran95" "asy" "cat" - ## [31] "asis" "stan" "block" - ## [34] "block2" "js" "css" - ## [37] "sql" "go" "python" - ## [40] "julia" "sass" "scss" - ## [43] "theorem" "lemma" "corollary" - ## [46] "proposition" "conjecture" "definition" - ## [49] "example" "exercise" "proof" - ## [52] "remark" "solution" - - languages <- list( - "r" = "r", - "rscript" = "r", - "asis" = NULL, - "asy" = NULL, - "awk" = NULL, - "bash" = "gnubash", - "block" = NULL, - "block2" = NULL, - "c" = "c", - "cat" = NULL, - "cc" = "cplusplus", - "coffee" = "coffeescript", - "css" = "css3", - "dot" = NULL, - "fortran" = NULL, - "fortran95" = NULL, - "gawk" = NULL, - "go" = "go", - "groovy" = "groovy", - "haskell" = "haskell", - "highlight" = NULL, - "js" = "javascript", - "julia" = NULL, - "lein" = NULL, - "mysql" = "mysql", - "node" = "node-dot-js", - "octave" = "octave", - "perl" = "perl", - "psql" = "postgresql", - "python" = "python", - "Rcpp" = "cplusplus", - "Rscript" = "rstudio", - "ruby" = "ruby", - "sas" = NULL, - "sass" = "sass", - "scala" = "scala", - "scss" = "sass", - "sed" = NULL, - "sh" = NULL, - "sql" = "mariadb", - "stan" = NULL, - "stata" = NULL, - "tikz" = NULL, - "zsh" = NULL - ) - - knitr_languages <- sort(names(knitr::knit_engines$get())) - missing_language <- ! (knitr_languages %in% names(languages)) - if (any(missing_language)) { - stop("Missing a rule for languages: ", paste0(knitr_languages[missing_language], collapse = ", ")) - } - - icon_folder <- file.path("inst", "internals", "icons") - - unlink(icon_folder, recursive = TRUE) - dir.create(icon_folder, recursive = TRUE) - - pb <- progress::progress_bar$new( - total = length(languages), - format = "[:bar] :current / :total :language", - show_after = 0, clear = TRUE - ) - Map(format(names(languages)), unname(languages), f = function(language, loc) { - pb$tick(tokens = list(language = language)) - if (is.null(loc)) return() - language <- tolower(trimws(language)) - icon_file <- file.path(icon_folder, paste0(language, ".svg")) - icon_url <- paste0("https://simpleicons.org/icons/", loc, ".svg") - icon_lines <- readLines(icon_url, warn = FALSE) # missing EOL - if (length(icon_lines) == 0) stop("Could not download: ", icon_url) - # will add a trailing line, which makes readLines happy - writeLines(icon_lines, icon_file) - }) - -})