Validates a ruleset and returns it as a plain list. A ruleset collects raw rules under a dotted namespace and version, and can extend, disable, and override rules from other registered rulesets.
Arguments
- id
Dotted namespace, for example
"lab.prereg".- version
MAJOR.MINOR.PATCH, optionally followed by-prerelease.- rules
List of raw rules, see
bg_rule().- extends
References to other rulesets,
"<id>@<major>"or"<id>@<version>", resolved in order.- disable
Qualified ids of inherited rules to drop.
- override
Named list of partial rules, named by qualified rule id. Each supplied field replaces the inherited one whole.
NULLremoves an optional field.- vocabulary
Optional named list with
utilities,goal_kinds, andchecks. Utilities and goal kinds are lists oflist(id, title, description, references). Checks are lists oflist(id, title, utilities). A declared category must be non-empty; an absent category is unconstrained.- title, description
Optional documentation strings.
- references
Optional source strings. They are never fetched.
Details
Resolution is recursive. Each extends reference is resolved in order and
the results are concatenated. Identical rules inherited along several paths
collapse to one; any other duplicate is an error. disable and then
override are applied to the inherited rules, and the ruleset's own rules
are appended with qualified ids <id>/<rule id>. Overridden rules keep their
source and gain overridden_by.
id@MAJOR selects the highest registered non-prerelease version with that
major. An exact version selects only that version.
Examples
bg_ruleset(
"lab.review",
"1.0.0",
rules = list(bg_rule(
id = "review-ppc",
on = "accept",
require = list(type = "require_review", check = "ppc"),
message = "Review the predictive check before accepting."
))
)
#> $id
#> [1] "lab.review"
#>
#> $rules
#> $rules[[1]]
#> $rules[[1]]$id
#> [1] "review-ppc"
#>
#> $rules[[1]]$message
#> [1] "Review the predictive check before accepting."
#>
#> $rules[[1]]$on
#> $rules[[1]]$on[[1]]
#> [1] "accept"
#>
#>
#> $rules[[1]]$require
#> $rules[[1]]$require$check
#> [1] "ppc"
#>
#> $rules[[1]]$require$type
#> [1] "require_review"
#>
#>
#>
#>
#> $version
#> [1] "1.0.0"
#>