Skip to content

Commit

Permalink
Better handling of chunk labels when provided as an option or yaml_op…
Browse files Browse the repository at this point in the history
…tion
  • Loading branch information
rundel committed Aug 4, 2024
1 parent 28bba6d commit 86649d2
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 24 deletions.
2 changes: 1 addition & 1 deletion R/parse_rmd.R
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ parse_qmd = function(qmd, allow_incomplete = FALSE, parse_yaml = TRUE) {
fix_unnamed_chunks = function(ast) {
unk_i = 1
for(j in seq_along(ast)) {
if (inherits(ast[[j]], "rmd_chunk") && ast[[j]][["name"]] == "") {
if (inherits(ast[[j]], "rmd_chunk") && ast[[j]][["name"]] == "" && rmd_node_label(ast[[j]]) == "") {
ast[[j]][["name"]] = paste0("unnamed-chunk-", unk_i)
unk_i = unk_i + 1
}
Expand Down
8 changes: 2 additions & 6 deletions R/print_tree.R
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,14 @@ tree_node.rmd_code_block = function(x) {

#' @exportS3Method
tree_node.rmd_chunk = function(x) {
name = if (x$name != "") cli::style_bold(x$name)
else cli::style_italic("<unnamed>")
name = cli::style_bold(rmd_node_label(x))

n_opt = length(x$options) + length(x$yaml_options)
opt = if (n_opt == 1) "1 opt, "
else if (n_opt != 0) paste0(length(x$options), " opts, ")
else ""

list(
text = "Chunk",
#label = paste0("[", x$engine, ", ", opt, length(x$code), " lines] - ", name)
label = cli::pluralize("[{x$engine}, {n_opt} {?options/option/options}, {length(x$code)} line{?s}]")
label = cli::pluralize("[{x$engine}, {n_opt} {?options/option/options}, {length(x$code)} line{?s}] - {name}")
)
}

Expand Down
8 changes: 6 additions & 2 deletions R/rmd_node.R
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,12 @@ rmd_node_label.default = function(x, ...) {
rmd_node_label.rmd_chunk = function(x, ...) {
name = x[["name"]]

if (name == "" & !is.null(x[["options"]][["label"]]))
name = x[["options"]][["label"]]
if (name == "") {
if (!is.null(x[["options"]][["label"]]))
name = x[["options"]][["label"]]
else if (!is.null(x[["yaml_options"]][["label"]]))
name = x[["yaml_options"]][["label"]]
}

if (is.null(name))
name = NA_character_
Expand Down
30 changes: 15 additions & 15 deletions tests/testthat/_snaps/print_tree.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@

+-- YAML [4 lines]
+-- Heading [h1] - Setup
| \-- Chunk [r, 1 option, 1 line]
| \-- Chunk [r, 1 option, 1 line] - setup
\-- Heading [h1] - Content
+-- Heading [h2] - R Markdown
| +-- Markdown [6 lines]
| +-- Chunk [r, 0 options, 1 line]
| \-- Chunk [r, 0 options, 1 line]
| +-- Chunk [r, 0 options, 1 line] - cars
| \-- Chunk [r, 0 options, 1 line] - unnamed-chunk-1
\-- Heading [h2] - Including Plots
+-- Markdown [2 lines]
+-- Chunk [r, 1 option, 1 line]
+-- Chunk [r, 1 option, 1 line] - pressure
\-- Markdown [2 lines]

---

+-- YAML [2 lines]
+-- Heading [h3] - Load packages
| \-- Chunk [r, 1 option, 2 lines]
| \-- Chunk [r, 1 option, 2 lines] - load-packages
+-- Heading [h3] - Exercise 1
| +-- Markdown [2 lines]
| \-- Heading [h4] - Solution
Expand All @@ -26,20 +26,20 @@
| +-- Markdown [2 lines]
| \-- Heading [h4] - Solution
| +-- Markdown [2 lines]
| +-- Chunk [r, 2 options, 5 lines]
| +-- Chunk [r, 2 options, 5 lines] - plot-dino
| +-- Markdown [2 lines]
| \-- Chunk [r, 0 options, 2 lines]
| \-- Chunk [r, 0 options, 2 lines] - cor-dino
\-- Heading [h3] - Exercise 3
+-- Markdown [2 lines]
\-- Heading [h4] - Solution
+-- Chunk [r, 2 options, 5 lines]
\-- Chunk [r, 0 options, 2 lines]
+-- Chunk [r, 2 options, 5 lines] - plot-star
\-- Chunk [r, 0 options, 2 lines] - cor-star

---

+-- YAML [2 lines]
+-- Heading [h3] - Load packages
| \-- Chunk [r, 1 option, 2 lines]
| \-- Chunk [r, 1 option, 2 lines] - load-packages
+-- Heading [h3] - Exercise 1
| +-- Markdown [2 lines]
| \-- Heading [h4] - Solution
Expand All @@ -48,16 +48,16 @@
| +-- Markdown [2 lines]
| \-- Heading [h4] - Solution
| +-- Markdown [4 lines]
| +-- Chunk [r, 2 options, 5 lines]
| +-- Chunk [r, 2 options, 5 lines] - plot-dino
| +-- Markdown [2 lines]
| \-- Chunk [r, 0 options, 2 lines]
| \-- Chunk [r, 0 options, 2 lines] - cor-dino
\-- Heading [h3] - Exercise 3
+-- Markdown [2 lines]
\-- Heading [h4] - Solution
+-- Markdown [4 lines]
+-- Chunk [r, 0 options, 1 line]
+-- Chunk [r, 0 options, 1 line] - plot-star
+-- Markdown [2 lines]
\-- Chunk [r, 0 options, 1 line]
\-- Chunk [r, 0 options, 1 line] - cor-star

---

Expand All @@ -72,7 +72,7 @@
+-- YAML [1 line]
+-- Heading [h2] - R Markdown
| +-- Markdown [4 lines]
| \-- Chunk [r, 0 options, 1 line]
| \-- Chunk [r, 0 options, 1 line] - cars
\-- Heading [h2] - Pandoc Raw Attribute Chunk
+-- Markdown [2 lines]
\-- Raw Attr Chunk [html, 5 lines]
Expand Down

0 comments on commit 86649d2

Please sign in to comment.