Title: | Pandoc Filters for R |
Version: | 0.1-6 |
Description: | The document converter 'pandoc' https://pandoc.org/ is widely used in the R community. One feature of 'pandoc' is that it can produce and consume JSON-formatted abstract syntax trees (AST). This allows to transform a given source document into JSON-formatted AST, alter it by so called filters and pass the altered JSON-formatted AST back to 'pandoc'. This package provides functions which allow to write such filters in native R code. Although this package is inspired by the Python package 'pandocfilters' https://github.com/jgm/pandocfilters/, it provides additional convenience functions which make it simple to use the 'pandocfilters' package as a report generator. Since 'pandocfilters' inherits most of it's functionality from 'pandoc' it can create documents in many formats (for more information see https://pandoc.org/) but is also bound to the same limitations as 'pandoc'. |
URL: | https://pandoc.org/, https://github.com/jgm/pandocfilters/ |
Depends: | R (≥ 3.0.0) |
Imports: | jsonlite, utils |
Suggests: | knitr |
VignetteBuilder: | knitr |
SystemRequirements: | pandoc (> 1.12) |
License: | GPL-3 |
RoxygenNote: | 7.2.1 |
NeedsCompilation: | no |
Packaged: | 2022-08-11 20:08:56 UTC; f |
Author: | Florian Schwendinger [aut, cre], Kurt Hornik [aut], Andrie de Vries [ctb] |
Maintainer: | Florian Schwendinger <FlorianSchwendinger@gmx.at> |
Repository: | CRAN |
Date/Publication: | 2022-08-11 21:40:02 UTC |
Attributes
Description
A constructor for pandoc attributes.
Usage
Attr(identifier = "", classes = character(), key_val_pairs = list())
Arguments
identifier |
a character string |
classes |
a character giving the classes |
key_val_pairs |
a list of tuple of type |
Examples
Attr("A", c("B", "C"), list(c("D", "E")))
Block Quote
Description
Constructs a block object of type "BlockQuote"
.
Usage
BlockQuote(blocks)
Arguments
blocks |
a block object or list of block objects |
Examples
BlockQuote(Plain("Hello R!"))
Bullet List
Description
Constructs a block object of type "BulletList"
.
Usage
BulletList(llblocks)
Arguments
llblocks |
a list of lists of blocks |
Examples
bullet_1 <- Plain("A")
bullet_2 <- Plain(Str("B"))
bullet_3 <- list(Plain(list(Str("C"))))
BulletList(list(bullet_1, bullet_2, bullet_3))
Citation
Description
Constructs an object of type "Citation"
.
Usage
Citation(
suffix,
id,
note_num = 0L,
mode = "AuthorInText",
prefix = list(),
hash = 0L
)
Arguments
suffix |
a inline object or list of inline objects |
id |
a character string (not visible in the text) |
note_num |
an integer |
mode |
a character string giving the citation mode, possible values are
|
prefix |
a inline object or list of inline objects |
hash |
an integer |
Citation
Description
Constructs an inline object of type "Cite"
.
Usage
Cite(citation, x)
Arguments
citation |
an object of type |
x |
a inline object or a list of inline objects |
Examples
ci <- Citation(suffix=list(Str("Suffix_1")),
id="Citation_ID_1", prefix=list(Str("Prefix_1")))
Cite(ci, Str("some text"))
Inline Code
Description
Constructs an inline object of type "Code"
.
Usage
Code(code, name = "", language = NULL, line_numbers = FALSE, start_from = 1)
Arguments
code |
a character string giving the inline code |
name |
an optional character string giving the name of the inline code chunk |
language |
an optional character string giving the programming language |
line_numbers |
a logical which controls if line numbers should be used |
start_from |
an integer giving the first line number |
Examples
Code("lm(hello ~ world)", "my_r_inline_code", "R", TRUE, 0)
Code("lm(hello ~ world)")
Code Block
Description
Constructs a block object of type "CodeBlock"
.
Usage
CodeBlock(attr, code)
Arguments
attr |
an object of type |
code |
a character string containing the source code. |
Examples
attr <- Attr("id", "Programming Language", list(c("key", "value")))
code <- "x <- 3\nprint('Hello R!')"
CodeBlock(attr, code)
Definition
Description
Constructs a Definition
which can be used as
an element of a "DefinitionList"
.
Usage
Definition(key, value)
Arguments
key |
a inline object or list of inline objects |
value |
a block object or list of block objects |
Examples
Definition("some key", Plain("some value"))
Definition List
Description
Constructs a block object of type "DefinitionList"
.
Usage
DefinitionList(x)
Arguments
x |
a list of key value pairs, the key is a list of |
Details
In the pandoc API https://johnmacfarlane.net/BayHac2014/doc/pandoc-types/Text-Pandoc-Definition.html
the DefinitionList
is described as follows, each list item is a pair consisting of a term
(a list of "inline"
objects) and one or more definitions (each a list of blocks).
Examples
key <- list(Str("key"))
value <- list(list(Plain(list(Str("value")))))
DefinitionList(list(list(key, value), Definition("some key", Plain("some value"))))
Generic Block Container with Attributes
Description
Constructs a block object of type "Div"
.
Usage
Div(blocks, attr = Attr())
Arguments
blocks |
a block object or list of block objects |
attr |
an object of type |
Examples
blocks <- Plain("Hello R!")
Div(blocks)
Emphasized Text
Description
Constructs an inline object of type "Emph"
.
Usage
Emph(x)
Arguments
x |
a inline object or a list of inline objects |
Examples
Emph("emphasize")
Header
Description
Constructs a block object of type "Header"
.
Usage
Header(x, level = 1L, attr = Attr())
Arguments
x |
a inline object or a list of inline objects |
level |
an integer giving the level |
attr |
an object of type |
Examples
Header("My Header")
Horizontal Rule
Description
Constructs a block object of type "HorizontalRule"
.
Usage
HorizontalRule()
Examples
HorizontalRule()
Image
Description
Constructs an inline object of type "Image"
.
Usage
Image(target, text, caption = "", attr = Attr())
Arguments
target |
a character string giving the target (hyper reference) |
text |
a inline object or a list of inline objects giving the visible part |
caption |
a character string describing the picture |
attr |
an optional object of type |
Details
Further Usage examples can be found in the README.
Examples
Image("https:://Rlogo.jpg", "some_text", "fig:some_caption")
Hard Line Break
Description
Constructs an inline object of type "LineBreak"
.
Usage
LineBreak()
Examples
LineBreak()
Hyperlink
Description
Constructs an inline object of type "Link"
.
Usage
Link(target, text, title = "", attr = Attr())
Arguments
target |
a character string giving the target (hyper reference) |
text |
a inline object or a list of inline objects giving the visible part |
title |
an optional character string giving the title |
attr |
an optional object of type |
Details
Further Usage examples can be found in the README.
Examples
Link("https://cran.r-project.org/", "Text_Shown", "some title")
ListAttributes
Description
A constructor for pandoc list attributes.
Usage
ListAttributes(
first_number = 1L,
style = "DefaultStyle",
delim = "DefaultDelim"
)
Arguments
first_number |
an integer giving the first number of the list |
style |
a character string giving the style, possible values are |
delim |
a character string giving the delimiter, possible values are |
TeX Math
Description
Constructs an inline object of type "Math"
.
Usage
Math(x)
Arguments
x |
a character string |
Examples
Math("3*x^2")
Note
Description
Constructs an inline object of type "Note"
.
Usage
Note(x)
Arguments
x |
a pandoc block object or a list of pandoc block objects |
Examples
block <- Plain("x")
Note(block)
Nothing
Description
Constructs a block object of type "Null"
.
Usage
Null()
Examples
Null()
Ordered List
Description
Constructs a block object of type "OrderedList"
.
Usage
OrderedList(lattr, llblocks)
Arguments
lattr |
a list of attributes |
llblocks |
a list of lists of blocks |
Examples
ordered_1 <- Plain("A")
ordered_2 <- list(Plain(Str("B")))
ordered_3 <- list(Plain(list(Str("C"))))
OrderedList(ListAttributes(), ordered_1)
OrderedList(ListAttributes(), list(ordered_1, ordered_2, ordered_3))
Paragraph
Description
Constructs a block object of type "Para"
.
Usage
Para(x)
Arguments
x |
a inline object or list of inline objects |
Examples
Para("x")
Plain Text
Description
Constructs a block object of type "Plain"
, a plain paragraph.
Usage
Plain(x)
Arguments
x |
a inline object or list of inline objects |
Examples
Plain("x")
Quoted Text
Description
Constructs an inline object of type "Quoted"
.
Usage
Quoted(x, quote_type = "DoubleQuote")
Arguments
x |
a inline object or a list of inline objects |
quote_type |
a character giving the quote type,
valid types are |
Examples
Quoted("some text", quote_type="SingleQuote")
Quoted("some text", quote_type="DoubleQuote")
Raw Inline
Description
Constructs an inline object of type "RawInline"
.
Usage
RawInline(format, x)
Arguments
format |
a character string giving the format (e.g. |
x |
a character string giving the inline |
Examples
RawInline("latex", "some RawInline")
Small Caps Text
Description
Constructs an inline object of type "SmallCaps"
.
Usage
SmallCaps(x)
Arguments
x |
a inline object or a list of inline objects |
Examples
SmallCaps("The latex command for 'small caps' is 'textsc'!")
Soft Line Break
Description
Constructs an inline object of type "SoftBreak"
.
Usage
SoftBreak()
Examples
SoftBreak()
Inter-word space
Description
Constructs an inline object of type "Space"
.
Usage
Space()
Examples
Space()
Generic Inline Container with Attributes
Description
Constructs an inline object of type "Span"
.
Usage
Span(attr, inline)
Arguments
attr |
an object of type |
inline |
a inline object or a list of inline objects which will be shown |
Examples
attr <- Attr("A", "B", list(c("C", "D")))
Span(attr, "some inline string")
Text (String)
Description
Constructs an inline object of type "Str"
.
Usage
Str(x)
Arguments
x |
a character string |
Details
To minimize the amount of unnecessary typing, pandoc filters automatically
converts character strings to pandoc objects of type "Str"
if needed.
Furthermore, if a single inline object is provided where a list of inline
objects is needed pandocfilters automatically converts this inline
object into a list of inline objects. For example, the canonical way to emphasize
the character string "some text"
would be Emph(list(Str("some text")))
since single inline objects are automatically transformed to lists of inline objects,
this is equivalent to Emph(Str("some text"))
. Since a character
string is automatically transformed to an inline object, this is is equivalent
to Emph("some string")
. In short, whenever a list of inline objects
is needed one can also use a single inline object or a character string.
Examples
Str("SomeString")
Strikeout Text
Description
Constructs an inline object of type "Strikeout"
.
Usage
Strikeout(x)
Arguments
x |
a inline object or a list of inline objects |
Examples
Strikeout("strikeout")
Strongly Emphasized Text
Description
Constructs an inline object of type "Strong"
.
Usage
Strong(x)
Arguments
x |
a inline object or a list of inline objects |
Examples
Strong("strong")
Subscripted Text
Description
Constructs an inline object of type "Subscript"
.
Usage
Subscript(x)
Arguments
x |
a inline object or a list of inline objects |
Examples
Subscript("some text written in superscript")
Superscripted Text
Description
Constructs an inline object of type "Superscript"
.
Usage
Superscript(x)
Arguments
x |
a inline object or a list of inline objects |
Examples
Superscript("some text written in superscript")
Table
Description
Constructs a block object of type "Table"
.
Usage
Table(
rows,
col_names = NULL,
aligns = NULL,
col_width = NULL,
caption = list()
)
Arguments
rows |
an object of class |
col_names |
a list of objects of type |
aligns |
a character vector of alignments, possible values are “l” for left, “r” for right, “c” for center and “d” for default. |
col_width |
a numeric vector |
caption |
a inline object or a list of inline objects giving the caption |
Details
Table, with caption, column alignments (required), relative column widths (0 = default), column headers (each a list of blocks), and rows (each a list of lists of blocks)
Table Cell
Description
Table cells is a constructor for plain table cells.
Usage
TableCell(x)
Arguments
x |
a character string giving the content of the table cell |
Details
In general table cells are a list of block elements, the
constructor TableCell
creates a plain table cell.
Examples
TableCell("Cell 1")
Block Objects
Description
In pandoc "block"
objects are used as container for
"inline"
objects and to give them specific roles.
Objects of the classes "NULL"
and "character"
can be coerced to "block"
.
Usage
as.block(x)
Arguments
x |
an object of type |
Value
an object of class "block"
.
Examples
as.block("some text")
as.block(NULL)
Inline Objects
Description
Objects of the classes "NULL"
and "character"
can be coerced to "inline"
.
Usage
as.inline(x)
Arguments
x |
an object of type |
Value
an object of class "inline"
.
Examples
as.inline("some text")
as.inline(NULL)
Apply a Function on a AST
Description
Apply the function FUN
on the abstract syntax tree (AST) obtained from pandoc.
Usage
astrapply(x, FUN, ...)
Arguments
x |
a list representing the AST obtained from pandoc. |
FUN |
the function to be applied to the AST. |
... |
optional arguments to |
Value
A list containing the modified AST.
Combine Block Objects
Description
Objects of class "block"
can be combined by using the generic
default method "c"
(combine).
Usage
## S3 method for class 'block'
c(...)
Arguments
... |
objects to be concatenated. |
Value
an list of "block"
objects.
Examples
c(Header( "R Basics" ), Header("What is R?", level=2),
Plain(c(Emph("R"), Space(), "is a system for ", Strong("statistical computation"))))
Combine Inline Objects
Description
Objects of class "inline"
can be combined by using the generic
default method "c"
(combine).
Usage
## S3 method for class 'inline'
c(...)
Arguments
... |
objects to be concatenated. |
Value
an list of "inline"
objects.
Examples
c(Str("some"), Strong("text"))
Create a new Document
Description
Constructs an object of type "document"
.
Usage
document()
Details
Each document has the following methods:
to_json()
Description
Returns the JSON
representation of the document.
write(con, format = "markdown", writer = write.pandoc)
Description
Write the JSON-formatted AST to a connection.
Arguments
con | a connection object or a character string to which the document is written. |
format | a character string giving the format (e.g. "latex" , "html" ). |
writer | an optional writer function, see write.pandoc. |
Note
Any function with the three arguments x
, con
and format
can be used as writer function.
append(x)
Description
Append a new block to the document.
Arguments
x | block object or list of block objects. |
append_plain(x)
Description
For more information about the arguments see Plain.
append_para(x)
Description
For more information about the arguments see Para.
append_code_block(attr, code)
Description
For more information about the arguments see CodeBlock.
append_block_quote(blocks)
Description
For more information about the arguments see BlockQuote.
append_ordered_list(lattr, lblocks)
Description
For more information about the arguments see OrderedList.
append_bullet_list(lblocks)
Description
For more information about the arguments see BulletList.
append_definition_list(x)
Description
For more information about the arguments see DefinitionList.
append_header(x, level=1L, attr=Attr())
Description
For more information about the arguments see Header.
append_horizontal_rule()
Description
For more information about the arguments see HorizontalRule.
append_table(rows, col_names=NULL, aligns=NULL, col_width=NULL, caption=list())
Description
For more information about the arguments see Table.
append_div(blocks, attr)
Description
For more information about the arguments see Div.
append_null()
Description
For more information about the arguments see Null.
Filter JSON-formatted AST.
Description
Apply a filter on the JSON-formatted abstract syntax tree (AST).
Usage
filter(FUN, ..., input = stdin(), output = stdout())
Arguments
FUN |
the function to be applied on the AST. |
... |
optional arguments to |
input |
a connection object or a character string from which the JSON-formatted AST is read. |
output |
a connection object or a character string to which the JSON-formatted AST is written. |
Get Pandoc Path
Description
Get the path of pandoc.
Usage
get_pandoc_path()
Get Pandoc-Types Version
Description
Get the version of pandoc-types.
Usage
get_pandoc_types_version(type = c("numeric", "character"))
Arguments
type |
a character giving the type of the return value. |
Examples
get_pandoc_types_version()
Get Pandoc Version
Description
Get the version of pandoc.
Usage
get_pandoc_version(type = c("numeric", "character"))
Arguments
type |
a character giving the type of the return value. |
Examples
get_pandoc_version()
Block Objects
Description
Tests if an object has the class attribute "block"
.
Usage
is.block(x)
Arguments
x |
an object to be tested. |
Value
a logical indicating if the provided object is of type "block"
.
Examples
is.block(as.block(NULL))
Inline Objects
Description
Tests if an object has the class attribute "inline"
.
Usage
is.inline(x)
Arguments
x |
an object to be tested. |
Value
a logical indicating if the provided object is of type "inline"
.
Examples
is.inline(as.inline(NULL))
Utility functions for testing filters
Description
Utility functions for testing filters
Usage
pandoc_to_json(file, from = "markdown")
pandoc_from_json(json, to = "markdown", exchange = c("file", "arg"))
Arguments
file |
file name |
from |
markdown, html, latex or native |
json |
a |
to |
markdown, html, latex or native |
exchange |
a character string |
Set Pandoc Path
Description
Set the path to pandoc.
Usage
set_pandoc_path(path = "pandoc")
Arguments
path |
a character giving the location of pandoc
(default is |
Write the JSON-formatted AST to a connection
Description
Write the JSON-formatted AST to a connection.
Usage
write.pandoc(json, file, format, exchange = c("arg", "file"))
Arguments
json |
a JSON representation of the AST to be written out |
file |
a connection object or a character string to which the JSON-formatted AST is written |
format |
a character string giving the format (e.g. |
exchange |
a character string |
Details
If you want to apply a filter to the document before it get's written out, or your
pandoc installation is not registered in the PATH
it can be favorable to provide your
own writer function to the document class.