this_lesson | R Documentation |
A storage cache for pegboard::Lesson objects and other pre-computed items
for use by other internal functions while {sandpaper}
is working.
this_lesson(path)
clear_this_lesson()
set_this_lesson(path)
set_resource_list(path)
clear_resource_list(path)
path |
a path to the current lesson |
this_lesson()
will return a pegboard::Lesson object if it has
previously been stored. There are three values that are cached:
.this_lesson
a pegboard::Lesson object
.this_diff
a charcter vector from gert::git_diff_patch()
.this_status
a data frame from gert::git_status()
.this_commit
the hash of the most recent commit
The function this_lesson()
first checks if .this_diff
is different than
the output of gert::git_diff_patch()
, then checks if there are any
changes to gert::git_status()
, and then finally checks if the commits are
identical. If there are differences or the values are not previously
cached, the lesson is loaded into memory, otherwise, it is fetched from the
previously stored lesson.
The storage cache is in a global package object called .store
, which is
initialised when {sandpaper}
is loaded via .lesson_store()
If there have been no changes git is aware of, the lesson remains the same.
A side-effect of this_lesson()
is that it will also initialise
pre-computed objects that pertain to the lesson itself. These are
initialised via set_globals()
. These storage objects are:
.resources
: a list of markdown resources for the lesson derived from
get_resource_list()
via set_resource_list()
this_metadata
: metadata with template for including in the pages.
initialised in initialise_metadata()
via set_globals()
learner_globals
: variables for the learner version of the pages
initialised in set_globals()
instructor_globals
: variables for the instructor version of the pages
initialised in set_globals()
tmp <- tempfile()
create_lesson(tmp, open = FALSE, rmd = FALSE)
# Read the lesson into cache
system.time(sandpaper:::this_lesson(tmp))
system.time(sandpaper:::this_lesson(tmp)) # less time to read in once cached
l <- sandpaper:::this_lesson(tmp)
l
# clear the cache
sandpaper:::clear_this_lesson()
system.time(sandpaper:::this_lesson(tmp)) # have to re-read the lesson
system.time(sandpaper:::this_lesson(tmp))
unlink(tmp)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.