knit_ex: Knitr Extensions

Description Usage Arguments Value Examples

View source: R/knitr.R

Description

knit_ex is a utility function for running small knitr examples, e.g., to illustrate functionalities or issues.

hook_try simply defines a function try in envir that prints the error message if any, and is called instead of base try.

hook_backspace is a chunk hook that enables the use of backspace characters in the output (e.g., as used in progress bars), and still obtain a final output as in the console.

hook_toggle is a chunk hook that adds clickable elements to toggle indvidual code chunks in HTML documents generated from .Rmd files.

Usage

1
2
3
4
5
6
7
  knit_ex(x, ..., quiet = TRUE, open = FALSE)

  hook_try(before, options, envir)

  hook_backspace()

  hook_toggle()

Arguments

x

text to knit as a character vector

...

arguments passed to knit2html or knit

quiet

logical that indicates if knitting should be quiet (no progress bars etc..).

open

logical, only used when x is in .Rmd format, that indicates if the generated document result should be open in a browse, instead of being printed on screen. Not that a browser will not open in non-interactive sessions, and the result will be returned invisibly.

before

logical that indicates when the hook is being called: before or after the chunk is processed.

options

list of current knitr chunk options

envir

environment where the chunk is evaluated

Value

knit_ex returns the generated code, although invisibly when open=TRUE.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#----------
# knit_ex
#----------
library(knitr)
knit_ex("1 + 1")

#----------
# hook_try
#----------
library(knitr)

# standard error message is caught
knit_ex("stop('ah ah')")

# with try the error is output on stderr but not caughted by knitr
knit_ex("try( stop('ah ah') )")

# no message caught
knit_ex("
^^^{r, include = FALSE}
knit_hooks$set(try = pkgmaker::hook_try)
^^^

^^^{r, try=TRUE}
try( stop('ah ah') )
^^^")

#----------
# hook_backspace
#----------
# Correctly formatting backspaces in chunk outputs
tmp <- tempfile(fileext = '.Rmd')
cat(file = tmp, "
^^^{r, include = FALSE}
library(knitr)
knit_hooks$set(backspace = pkgmaker::hook_backspace())
^^^
Default knitr does not handle backspace and adds a special character:
^^^{r}
cat('abc\bd')
^^^

Using the hook backspace solves the issue:
^^^{r, backspace=TRUE}
cat('abc\bd')
^^^
")

# knit
out <- knitr::knit2html(tmp, fragment.only = TRUE)
# look at output
## Not run: 
  browseURL(out)
  edit( file = out)

## End(Not run)
# cleanup
unlink(c(tmp, out))

#----------
# hook_toggle
#----------
knit_ex("

Declare chunk hook:
^^^{r, setup}
library(knitr)
knit_hooks$set(toggle = hook_toggle())
^^^

The R code of this chunk can be toggled on/off, and starts visible:
^^^{r, toggle=TRUE}
print(1:10)
^^^
The R code of this chunk can be toggled on/off, and starts hidden:
^^^{r, toggle=FALSE}
print(1:10)
^^^

This is a plain chunk that cannot be toggled on/off:
^^^{r}
print(1:10)
^^^

Now all chunks can be toggled and start visible:
^^^{r, toggle_all}
opts_chunk$set(toggle = TRUE)
^^^

^^^{r}
sample(5)
^^^

To diable the toggle link, one can pass anything except TRUE/FALSE:
^^^{r, toggle = NA}
sample(5)
^^^

", open = TRUE)

pkgmaker documentation built on May 2, 2019, 4:42 p.m.