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
orrmd_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 tormd_fenced_div_open()
.- allow_multiple
Logical. If
FALSE
(default), throws an error when selected indices are discontinuous. IfTRUE
, allows wrapping multiple discontinuous ranges separately.
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)