Validate a CITATION.cff file or a cff object using the corresponding validation schema.
Arguments
- x
This is expected to be either a full
cffobject created withcff_create()or the path to aCITATION.cfffile to be validated. In the case of a*cfffile it would read withcff_read_cff_citation().- verbose
Logical
TRUE/FALSE. OnTRUEthe function would display informative messages.
Value
A message indicating the result of the validation and an invisible value
TRUE/FALSE. On error, the results would have an attribute "errors"
containing the error summary (see Examples and attr()).
See also
Guide to Citation File Format schema version 1.2.0.
jsonvalidate::json_validate(), that is the function that performs the
validation.
Other core functions of cffr:
cff(),
cff_create(),
cff_modify()
Examples
# \donttest{
# Full .cff example
cff_validate(system.file("examples/CITATION_complete.cff", package = "cffr"))
#> ══ Validating cff ══════════════════════════════════════════════════════════════
#> ✔ Congratulations! /github/home/R/x86_64-pc-linux-gnu-library/4.5/cffr/examples/CITATION_complete.cff is valid
# Validate a cffr object
cffr <- cff_create("jsonlite")
class(cffr)
#> [1] "cff"
cff_validate(cffr)
#> ══ Validating cff ══════════════════════════════════════════════════════════════
#> ✔ Congratulations! This <cff> is valid
# }
# .cff with errors
err_f <- system.file("examples/CITATION_error.cff", package = "cffr")
# Can manipulate the errors as data frame
res <- try(cff_validate(err_f))
#> ══ Validating cff ══════════════════════════════════════════════════════════════
#> ✖ Oops! /github/home/R/x86_64-pc-linux-gnu-library/4.5/cffr/examples/CITATION_error.cff has the following errors:
#> * cff: has additional properties
#> * cff.authors.0: no schemas match
#> * cff.doi: referenced schema does not match
#> * cff.keywords.0: is the wrong type
#> * cff.license: referenced schema does not match
#> * cff.url: referenced schema does not match
isTRUE(res)
#> [1] FALSE
isFALSE(res)
#> [1] TRUE
attr(res, "errors")
#> field message
#> 1 cff has additional properties
#> 2 cff.authors.0 no schemas match
#> 3 cff.doi referenced schema does not match
#> 4 cff.keywords.0 is the wrong type
#> 5 cff.license referenced schema does not match
#> 6 cff.url referenced schema does not match
# If a CITATION file (note that is not .cff) it throws an error
try(cff_validate(system.file("CITATION", package = "cffr")))
#> Error in abort_if_not_cff(x) : `x` is not a '*.cff' file.
