inst/CITATION url fields are
detected, including those matching the pattern
.*dx.doi.org/.website field in definitions.person
and definitions.entity uses ROR as a fallback.cff_read() correctly handles a single
languages value (#105).cff_validate() now uses the ajv validation engine
through jsonvalidate::json_validate(), which returns more
informative error messages.as_cff_person() improves comment detection and parsing
across its function family.cff_gha_update() now runs in ubuntu-latest
by default to save GitHub
Actions quota (#90, thanks to @Pakillo).cff_write() gains a new r_citation
argument. When it is set to TRUE, an R
citation file (inst/CITATION) is generated or updated with
the information from the generated CITATION.cff file.
No backup copy is created. For more control, use
cff_write_citation() (#79).repository-code now also recognizes Codeberg as a valid repository
(#88).repository-code recognizes repositories regardless of
casing. Lowercase is still recommended as a good practice for
R developers.CITATION file providing a DOI, the
CITATION DOI is used as the main CITATION.cff
doi and the CRAN DOI is added as an
identifier.doi.cff_create(dependencies = TRUE)) and the package
dependency is on CRAN, the CRAN DOI is
used for the dependency in the references key.commit is extracted from RemoteSha.cran_to_spdx dataset was updated.cff_write() gains a new encoding argument
to make it work with different encodings. See iconv().This is a major release with some notable changes. The main change
affects non-core functions. The natural workflow
(cff_create() → cff_write() →
cff_validate()) should not be affected.
cffr now implements a new class system for definitions.reference,
definitions.person
and definitions.entity
objects:
definitions.reference objects
(e.g. references) has class cff_ref_lst, cff
and individual elements (e.g. preferred-citation or each
member of references) have class
cff_ref, cff.definitions.person or
definitions.entity objects (e.g. authors,
contact) has class cff_pers_lst, cff and
individual elements (e.g. publisher or each member of
authors) have class cff_pers, cff.This change allows writing specific S3 methods and extends the capabilities of the package.
as_cff() is a new S3 generic method that replaces
as.cff() and coerces R objects to
cff class format. Current methods provided are:
as_cff.Bibtex().as_cff.bibentry(), replacing
cff_parse_citation().as_cff.person(), similar to
as_cff_person() but only for person objects.
We recommend using as_cff_person() since it can also coerce
strings representing authors in BibTeX markup
("{von Neumen}, James"), which cannot be captured properly
through methods.as_bibentry() is a new method for a variety of classes
(character, list, NULL and
classes defined by cffr).as_cff_person() is a new method.cff class:
as.data.frame.cff().as.person(), although only for
definitions.person or definitions.entity
(e.g. authors, contacts, editors,
publisher, etc.).head.cff(), tail.cff().toBibtex.cff().The API has been completely revised to provide more clarity on function naming and to facilitate internal maintenance. This change only affects non-core functions. Each function now does fewer things but does them better. The old API has been deprecated and now warns when used, providing advice on the replacement function.
cff_to_bibtex() and
cff_extract_to_bibtex(): replaced by the
as_bibentry() S3 generic.cff_parse_person() and
cff_parse_person_bibtex(): replaced by the
as_cff_person() S3 generic.cff_parse_citation(): replaced by the
as_cff() S3 generic.cff_from_bibtex(): replaced by
cff_read_bib() (for *.bib files) and
cff_read_bib_text() (for character strings).write_bib() and write_citation(): replaced
by cff_write_bib() and cff_write_citation(),
respectively.path in cff() is also deprecated,
use cff_read() instead.cff_read() now handles reading from external files
exclusively. It is designed to fit all supported file types in a single
entry point, along with new specific readers used under the hood by
cff_read():
cff_read_cff_citation().cff_read_description().cff_read_citation().cff_read_bib().cff_modify() is a new function for updating and
modifying cff objects easily.vignette("bibtex-cff", package = "cffr")), with
corresponding changes in the mapping performed by
as_bibtex() and cff_parse_citation():
collection-type: book-series.cff_to_bibtex() and
cff_extract_to_bibtex() have been merged.
cff_extract_to_bibtex() is now soft-deprecated.write_citation() is a new function that can generate an
inst/CITATION file from a cff object
(#51).Additional authors of an R package can now be
included based on roles in the DESCRIPTION file, through
the authors_roles argument (#49).
The message interface now uses cli.
The invisible result of cff_validate() now includes
the summary of errors (if any) as an attributes() named
"error", as jsonvalidate::json_validate() does
when verbose = TRUE:
Be verbose? If
TRUE, then an attribute"errors"will list validation failures as a data frame.
Improved extraction of date-released.
cff_validate() performance was improved.cff_from_bibtex().preferred-citation is only produced when
inst/CITATION has been provided with the package
(#37).cff_read(). This functionality was already
implemented in cff(), but the new function provides
clarity.schema.json for validation (#33).master
or main branch.references key, using citation(auto = TRUE).
dependencies argument to
cff_create() and cff_write().cff_parse_citation() include:
cff_parse_citation() extracts more information about
authors, based on the fields provided in the DESCRIPTION
file.cff_parse_citation() does a better job extracting
information from bibentry()/BibTeX and mapping it to the
preferred-citation and references CFF
keys.cff_git_hook_install().cff_git_hook_remove().cff_extract_to_bibtex().cff_to_bibtex().cff_parse_person_bibtex().write_bib().pages to cff_parse_citation().gh_keywords argument to
cff_create()/cff_write(). If
TRUE, it includes GitHub repository topics as
keywords.keys argument.cran_to_spdx dataset.citation().preferred-citation key is automatically generated
from DESCRIPTION.cff_schema_definitions_reference() to
cff_schema_definitions_refs().repository key is supported.vignette("r-cff", package = "cffr")
vignette.cff_gha_update().