| HandlrClient {handlr} | R Documentation |
HandlrClient
Description
handlr client, read and write to and from all citation formats
Details
The various inputs to the x parameter are handled in different
ways:
file: contents read from file, we grab file extension, and we guess format based on combination of contents and file extension because file extensions may belie what's in the file
string: string read in, and we guess format based on contents of the string
DOI: we request citeproc-json format from the Crossref API
DOI url: we request citeproc-json format from the Crossref API
Public fields
path(character) non-empty if file path passed to initialize
string(character) non-empty if string (non-file) passed to initialize
parsedafter
read()is run, the parsed contentfile(logical)
TRUEif a file passed to initialize, elseFALSEext(character) the file extension
format_guessed(character) the guessed file format
doi(character) the DOI, if any found
Methods
Public methods
Method print()
print method for HandlrClient objects
Usage
HandlrClient$print(x, ...)
Arguments
xself
...ignored
Method new()
Create a new HandlrClient object
Usage
HandlrClient$new(x, format = NULL, ...)
Arguments
x(character) a file path (the file must exist), a string containing contents of the citation, a DOI, or a DOI as a URL. See Details.
format(character) one of citeproc, ris, bibtex, codemeta, cff, or
NULL. IfNULL, we attempt to guess the format, and error if we can not guess...curl options passed on to crul::verb-GET
Returns
A new HandlrClient object
Method read()
read input
Usage
HandlrClient$read(format = NULL, ...)
Arguments
format(character) one of citeproc, ris, bibtex, codemeta, cff, or
NULL. IfNULL, we attempt to guess the format, and error if we can not guess...further args to the writer fxn, if any
Method write()
write to std out or file
Usage
HandlrClient$write(format, file = NULL, ...)
Arguments
format(character) one of citeproc, ris, bibtex, schema_org, rdfxml, codemeta, or cff
filea file path, if NULL to stdout. for
format=ris, number of files must equal number of ris citations...further args to the writer fxn, if any
Method as_df()
convert data to a data.frame using handl_to_df()
Usage
HandlrClient$as_df()
Returns
a data.frame
Method clone()
The objects of this class are cloneable with this method.
Usage
HandlrClient$clone(deep = FALSE)
Arguments
deepWhether to make a deep clone.
Note
If $parsed is NULL then it's likely $read() has not
been run - in which case we attempt to run $read() to
populate $parsed
Examples
# read() can be run with format specified or not
# if format not given, we attempt to guess the format and then read
z <- system.file('extdata/citeproc.json', package = "handlr")
(x <- HandlrClient$new(x = z))
x$read()
x$read("citeproc")
x$parsed
# you can run read() then write()
# or just run write(), and read() will be run for you if possible
z <- system.file('extdata/citeproc.json', package = "handlr")
(x <- HandlrClient$new(x = z))
cat(x$write("ris"))
# read from a DOI as a url
if (interactive()) {
(x <- HandlrClient$new('https://doi.org/10.7554/elife.01567'))
x$parsed
x$read()
x$parsed
x$write('bibtex')
}
# read from a DOI
if (interactive()) {
(x <- HandlrClient$new('10.7554/elife.01567'))
x$parsed
x$read()
x$write('bibtex')
}
# read in citeproc, write out bibtex
z <- system.file('extdata/citeproc.json', package = "handlr")
(x <- HandlrClient$new(x = z))
x$path
x$ext
x$read("citeproc")
x$parsed
x$write("bibtex")
f <- tempfile(fileext = ".bib")
x$write("bibtex", file = f)
readLines(f)
unlink(f)
# read in ris, write out ris
z <- system.file('extdata/peerj.ris', package = "handlr")
(x <- HandlrClient$new(x = z))
x$path
x$format_guessed
x$read("ris")
x$parsed
x$write("ris")
cat(x$write("ris"))
# read in bibtex, write out ris
(z <- system.file('extdata/bibtex.bib', package = "handlr"))
(x <- HandlrClient$new(x = z))
x$path
x$format_guessed
if (requireNamespace("bibtex", quietly = TRUE)) {
x$read("bibtex")
x$parsed
x$write("ris")
cat(x$write("ris"))
}
# read in bibtex, write out RDF XML
if (requireNamespace("bibtex", quietly = TRUE) && interactive()) {
(z <- system.file('extdata/bibtex.bib', package = "handlr"))
(x <- HandlrClient$new(x = z))
x$path
x$format_guessed
x$read("bibtex")
x$parsed
x$write("rdfxml")
cat(x$write("rdfxml"))
}
# codemeta
(z <- system.file('extdata/codemeta.json', package = "handlr"))
(x <- HandlrClient$new(x = z))
x$path
x$format_guessed
x$read("codemeta")
x$parsed
x$write("codemeta")
# cff: Citation File Format
(z <- system.file('extdata/citation.cff', package = "handlr"))
(x <- HandlrClient$new(x = z))
x$path
x$format_guessed
x$read("cff")
x$parsed
x$write("codemeta")
# > 1 citation
z <- system.file('extdata/citeproc-many.json', package = "handlr")
(x <- HandlrClient$new(x = z))
x$parsed
x$read()
x$parsed
## schmea org
x$write("schema_org")
## bibtex
x$write("bibtex")
## bibtex to file
f <- tempfile(fileext=".bib")
x$write("bibtex", f)
readLines(f)
unlink(f)
## to RIS
x$write("ris")
### only one per file, so not combined
files <- replicate(2, tempfile(fileext=".ris"))
x$write("ris", files)
lapply(files, readLines)
# handle strings instead of files
z <- system.file('extdata/citeproc-crossref.json', package = "handlr")
(x <- HandlrClient$new(x = readLines(z)))
x$read("citeproc")
x$parsed
cat(x$write("bibtex"), sep = "\n")