Pandoc.brew: Brew in pandoc format

View source: R/brew.R

Pandoc.brewR Documentation

Brew in pandoc format

Description

This function behaves just like brew except for the <%=...%> tags, where Pandoc.brew first translate the R object found between the tags to Pandoc's markdown before passing to the cat function.

Usage

Pandoc.brew(
  file = stdin(),
  output = stdout(),
  convert = FALSE,
  open = TRUE,
  graph.name,
  graph.dir,
  graph.hi.res = FALSE,
  text = NULL,
  envir = parent.frame(),
  append = FALSE,
  ...
)

Arguments

file

file path of the brew template. As this is passed to readLines, file could be an URL too, but not over SSL (for that latter RCurl would be needed).

output

(optional) file path of the output file

convert

string: format of required output document (besides Pandoc's markdown). Pandoc is called if set via Pandoc.convert and the converted document could be also opened automatically (see below).

open

try to open converted document with operating system's default program

graph.name

character string (default to %t when output is set to stdout and paste0(basename(output), '-%n') otherwise) passed to evals. Besides evals's possible tags %i is also available which would be replaced by the chunk number (and optionally an integer which would handle nested brew calls) and %I with the order of the current expression.

graph.dir

character string (default to tempdir() when output is set to stdout and dirname(graph.name) otherwise) passed to evals

graph.hi.res

render high resolution images of plots? Default is FALSE except for HTML output.

text

character vector (treated as the content of the file

envir

environment where to brew the template

append

should append or rather overwrite (default) the output markdown text file? Please note that this option only affects the markdown file and not the optionally created other formats.

...

additional parameters passed to Pandoc.convert

Details

This parser tries to be smart in some ways:

  • a block (R commands between the tags) could return any value at any part of the block and there are no restrictions about the number of returned R objects

  • plots and images are grabbed in the document, rendered to a png file and pander method would result in a Pandoc's markdown formatted image link (so the image would be shown/included in the exported document). The images are put in plots directory in current getwd() or to the specified output file's directory.

  • all warnings/messages and errors are recorded in the blocks and returned in the document as a footnote

Please see my Github page for details (https://rapporter.github.io/pander/#brew-to-pandoc) and examples (https://rapporter.github.io/pander/#examples).

Value

converted file name with full path if convert is set, none otherwise

Note

Only one of the input parameters (file or text) is to be used at once!

References

Examples

## Not run: 
text <- paste('# Header', '',
  'What a lovely list:\n<%=as.list(runif(10))%>',
  'A wide table:\n<%=mtcars[1:3, ]%>',
  'And a nice chart:\n\n<%=plot(1:10)%>', sep = '\n')
Pandoc.brew(text = text)
Pandoc.brew(text = text, output = tempfile(), convert = 'html')
Pandoc.brew(text = text, output = tempfile(), convert = 'pdf')

## pi is awesome
Pandoc.brew(text='<%for (i in 1:5) {%>\n Pi has a lot (<%=i%>) of power: <%=pi^i%><%}%>')

## package bundled examples
Pandoc.brew(system.file('examples/minimal.brew', package='pander'))
Pandoc.brew(system.file('examples/minimal.brew', package='pander'),
  output = tempfile(), convert = 'html')
Pandoc.brew(system.file('examples/short-code-long-report.brew', package='pander'))
Pandoc.brew(system.file('examples/short-code-long-report.brew', package='pander'),
  output = tempfile(), convert = 'html')

## brew returning R objects
str(Pandoc.brew(text='Pi equals to <%=pi%>.
And here are some random data:\n<%=runif(10)%>'))

str(Pandoc.brew(text='# Header <%=1%>\nPi is <%=pi%> which is smaller then <%=2%>.
foo\nbar\n <%=3%>\n<%=mtcars[1:2,]%>'))

str(Pandoc.brew(text='<%for (i in 1:5) {%>
Pi has a lot (<%=i%>) of power: <%=pi^i%><%}%>'))

## End(Not run)

Rapporter/pander documentation built on Sept. 15, 2024, 2:11 p.m.