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 via 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 via 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, via 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 a CITATION R file 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 field, 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 preferred-citation/references fields
of CFF.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().