Skip to contents

This function wraps selected nodes in an rmd_ast with fenced div opening and closing tags. The selection is implemented using the same approach as rmd_select() which enables a variety of useful syntax for selecting nodes.

The function checks if the selected indices form a single continuous range. If this is not the case then an error will be thrown. If wrapping multiple discontinous ranges of nodes is desired then the allow_multiple can be set to TRUE.

Usage

rmd_fenced_div_wrap(
  x,
  ...,
  open = rmd_fenced_div_open(),
  allow_multiple = FALSE
)

Arguments

x

Rmd object, e.g. rmd_ast or rmd_tibble.

...

One or more unquoted expressions separated by commas for node selection. Uses the same syntax as rmd_select().

open

An rmd_fenced_div_open node that defines the opening fenced div. Defaults to rmd_fenced_div_open().

allow_multiple

Logical. If FALSE (default), throws an error when selected indices are discontinuous. If TRUE, allows wrapping multiple discontinuous ranges separately.

Value

Returns the modified Rmd object with selected nodes wrapped in the fenced div(s).

Examples

rmd = parse_rmd(system.file("examples/hw01.Rmd", package = "parsermd"))

rmd_fenced_div_wrap(rmd, "plot-dino":"cor-dino")
#> ├── YAML [2 fields]
#> ├── Heading [h3] - Load packages
#> │   └── Chunk [r, 2 lines] - load-packages
#> ├── Heading [h3] - Exercise 1
#> │   ├── Markdown [1 line]
#> │   └── Heading [h4] - Solution
#> │       └── Markdown [1 line]
#> ├── Heading [h3] - Exercise 2
#> │   ├── Markdown [1 line]
#> │   └── Heading [h4] - Solution
#> │       ├── Markdown [3 lines]
#> │       ├── Fenced div (open) <no attrs>
#> │       │   ├── Chunk [r, 5 lines] - plot-dino
#> │       │   ├── Markdown [1 line]
#> │       │   └── Chunk [r, 2 lines] - cor-dino
#> │       └── Fenced div (close) 
#> └── Heading [h3] - Exercise 3
#>     ├── Markdown [1 line]
#>     └── Heading [h4] - Solution
#>         ├── Markdown [3 lines]
#>         ├── Chunk [r, 1 line] - plot-star
#>         ├── Markdown [1 line]
#>         └── Chunk [r, 1 line] - cor-star

rmd_fenced_div_wrap(rmd, has_type("rmd_chunk"), allow_multiple=TRUE)
#> ├── YAML [2 fields]
#> ├── Heading [h3] - Load packages
#> │   ├── Fenced div (open) <no attrs>
#> │   │   └── Chunk [r, 2 lines] - load-packages
#> │   └── Fenced div (close) 
#> ├── Heading [h3] - Exercise 1
#> │   ├── Markdown [1 line]
#> │   └── Heading [h4] - Solution
#> │       └── Markdown [1 line]
#> ├── Heading [h3] - Exercise 2
#> │   ├── Markdown [1 line]
#> │   └── Heading [h4] - Solution
#> │       ├── Markdown [3 lines]
#> │       ├── Fenced div (open) <no attrs>
#> │       │   └── Chunk [r, 5 lines] - plot-dino
#> │       ├── Fenced div (close) 
#> │       ├── Markdown [1 line]
#> │       ├── Fenced div (open) <no attrs>
#> │       │   └── Chunk [r, 2 lines] - cor-dino
#> │       └── Fenced div (close) 
#> └── Heading [h3] - Exercise 3
#>     ├── Markdown [1 line]
#>     └── Heading [h4] - Solution
#>         ├── Markdown [3 lines]
#>         ├── Fenced div (open) <no attrs>
#>         │   └── Chunk [r, 1 line] - plot-star
#>         ├── Fenced div (close) 
#>         ├── Markdown [1 line]
#>         ├── Fenced div (open) <no attrs>
#>         │   └── Chunk [r, 1 line] - cor-star
#>         └── Fenced div (close) 

rmd_fenced_div_wrap(
  rmd, has_type("rmd_chunk"),
  open = rmd_fenced_div_open(classes = ".note"),
  allow_multiple = TRUE
)
#> ├── YAML [2 fields]
#> ├── Heading [h3] - Load packages
#> │   ├── Fenced div (open) [.note]
#> │   │   └── Chunk [r, 2 lines] - load-packages
#> │   └── Fenced div (close) 
#> ├── Heading [h3] - Exercise 1
#> │   ├── Markdown [1 line]
#> │   └── Heading [h4] - Solution
#> │       └── Markdown [1 line]
#> ├── Heading [h3] - Exercise 2
#> │   ├── Markdown [1 line]
#> │   └── Heading [h4] - Solution
#> │       ├── Markdown [3 lines]
#> │       ├── Fenced div (open) [.note]
#> │       │   └── Chunk [r, 5 lines] - plot-dino
#> │       ├── Fenced div (close) 
#> │       ├── Markdown [1 line]
#> │       ├── Fenced div (open) [.note]
#> │       │   └── Chunk [r, 2 lines] - cor-dino
#> │       └── Fenced div (close) 
#> └── Heading [h3] - Exercise 3
#>     ├── Markdown [1 line]
#>     └── Heading [h4] - Solution
#>         ├── Markdown [3 lines]
#>         ├── Fenced div (open) [.note]
#>         │   └── Chunk [r, 1 line] - plot-star
#>         ├── Fenced div (close) 
#>         ├── Markdown [1 line]
#>         ├── Fenced div (open) [.note]
#>         │   └── Chunk [r, 1 line] - cor-star
#>         └── Fenced div (close)