Skip to contents

A validator based on the pegboard::Lesson class cached with this_lesson() that will provide line reports for fenced divs, links, images, and heading structure. For details on the type of validators avaliable, see the {pegboard} article Validation of Lesson Elements

Usage

validate_lesson(path = ".", headings = FALSE, quiet = FALSE)

Arguments

path

the path to the lesson. Defaults ot the current directory

headings

If TRUE, headings will be checked and validated. Currently set to FALSE as we are re-investigating some false positives.

quiet

if TRUE, no messages will be issued, otherwise progress messages will be issued for each test

Value

a list with the results for each test as described in pegboard::Lesson

Details

Headings

We expect the headings to be semantic and informative. Details of the tests for headings can be found at pegboard::validate_headings()

Internal links and images should exist and images should have alt text. Details for these tests can be found at pegboard::validate_links()

Fenced Divs (callout blocks)

Callout Blocks should be one of the expected types. Details for this test can be found at pegboard::validate_divs()

Examples

tmp <- tempfile()
lsn <- create_lesson(tmp, open = FALSE)
#> → Creating Lesson in /tmp/RtmpQSXDNq/file1706736d1e51...
#>  No schedule set, using Rmd files in episodes/ directory.
#> → Creating Lesson in /tmp/RtmpQSXDNq/file1706736d1e51...

#> To remove this message, define your schedule in config.yaml or use `set_episodes()` to generate it.
#> → Creating Lesson in /tmp/RtmpQSXDNq/file1706736d1e51...

#> ────────────────────────────────────────────────────────────────────────
#> → Creating Lesson in /tmp/RtmpQSXDNq/file1706736d1e51...

#>  To save this configuration, use
#> 
#> set_episodes(path = path, order = ep, write = TRUE)
#> → Creating Lesson in /tmp/RtmpQSXDNq/file1706736d1e51...

#>  Edit /tmp/RtmpQSXDNq/file1706736d1e51/episodes/introduction.Rmd.
#> → Creating Lesson in /tmp/RtmpQSXDNq/file1706736d1e51...

#>  First episode created in /tmp/RtmpQSXDNq/file1706736d1e51/episodes/introduction.Rmd
#> → Creating Lesson in /tmp/RtmpQSXDNq/file1706736d1e51...

#>  Workflows up-to-date!
#> → Creating Lesson in /tmp/RtmpQSXDNq/file1706736d1e51...

#>  Consent to use package cache provided
#> → Creating Lesson in /tmp/RtmpQSXDNq/file1706736d1e51...

#> - The project is out-of-sync -- use `renv::status()` for details.
#> → Searching for and installing available dependencies
#> The following packages were discovered:
#> 
#> # ~/work/_temp/Library -------------------------------------------------------
#> - R6            2.5.1
#> - base64enc     0.1-3
#> - bslib         0.8.0
#> - cachem        1.1.0
#> - cli           3.6.3
#> - digest        0.6.37
#> - evaluate      1.0.1
#> - fastmap       1.2.0
#> - fontawesome   0.5.2
#> - fs            1.6.5
#> - glue          1.8.0
#> - highr         0.11
#> - htmltools     0.5.8.1
#> - jquerylib     0.1.4
#> - jsonlite      1.8.9
#> - knitr         1.48
#> - lifecycle     1.0.4
#> - memoise       2.0.1
#> - mime          0.12
#> - rappdirs      0.3.3
#> - rlang         1.1.4
#> - rmarkdown     2.29
#> - sass          0.4.9
#> - tinytex       0.54
#> - xfun          0.49
#> - yaml          2.3.10
#> 
#> They will be copied into the project library.
#> 
#> - Copying packages into the project library ... Done!
#> - Hydrated 26 packages in 0.21 seconds.
#> - The project is out-of-sync -- use `renv::status()` for details.
#> → Recording changes in lockfile
#> The following package(s) will be updated in the lockfile:
#> 
#> # https://packagemanager.posit.co/cran/__linux__/jammy/latest ----------------
#> - R6            [* -> 2.5.1]
#> - base64enc     [* -> 0.1-3]
#> - bslib         [* -> 0.8.0]
#> - cachem        [* -> 1.1.0]
#> - cli           [* -> 3.6.3]
#> - digest        [* -> 0.6.37]
#> - evaluate      [* -> 1.0.1]
#> - fastmap       [* -> 1.2.0]
#> - fontawesome   [* -> 0.5.2]
#> - fs            [* -> 1.6.5]
#> - glue          [* -> 1.8.0]
#> - highr         [* -> 0.11]
#> - htmltools     [* -> 0.5.8.1]
#> - jquerylib     [* -> 0.1.4]
#> - jsonlite      [* -> 1.8.9]
#> - knitr         [* -> 1.48]
#> - lifecycle     [* -> 1.0.4]
#> - memoise       [* -> 2.0.1]
#> - mime          [* -> 0.12]
#> - rappdirs      [* -> 0.3.3]
#> - renv          [* -> 1.0.11]
#> - rlang         [* -> 1.1.4]
#> - rmarkdown     [* -> 2.29]
#> - sass          [* -> 0.4.9]
#> - tinytex       [* -> 0.54]
#> - xfun          [* -> 0.49]
#> - yaml          [* -> 2.3.10]
#> 
#> The version of R recorded in the lockfile will be updated:
#> - R             [* -> 4.4.2]
#> 
#> - Lockfile written to "/tmp/RtmpQSXDNq/file1706736d1e51/renv/profiles/lesson-requirements/renv.lock".
#>  Lesson successfully created in /tmp/RtmpQSXDNq/file1706736d1e51
#> → Creating Lesson in /tmp/RtmpQSXDNq/file1706736d1e51...

validate_lesson(lsn, headings = TRUE)
#> ── Validating Headings ─────────────────────────────────────────────────
#> ── Validating Fenced Divs ──────────────────────────────────────────────
#> ── Validating Internal Links and Images ────────────────────────────────