The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
zuyaml converts between YAML 1.2 and ordinary R objects, using a
bundled copy of the cyaml C11 parser and
emitter, so there is no system dependency and no runtime dependency
beyond R itself. Ambiguous YAML is handled strictly: the 1.2 core schema
(so yes is a string), duplicate keys refused, large
integers preserved, and a document stream kept apart from a
sequence.
install.packages("zuyaml")Or the development version from GitHub:
# install.packages("pak")
pak::pak("pedrobtz/zuyaml")yaml_parse() turns YAML text into R objects:
library(zuyaml)
yaml_parse("host: localhost\nport: 8080\ntls: true\n")
#> $host
#> [1] "localhost"
#>
#> $port
#> [1] 8080
#>
#> $tls
#> [1] TRUEyaml_emit() goes the other way. Note the quoting:
"42" is a string in R, so it stays a string in YAML and on
the way back. The same holds for the cases that are easy to get wrong —
line breaks, leading and trailing whitespace, mapping keys,
whole-numbered doubles — so what you emit parses back to what you
had.
cat(yaml_emit(list(version = "42", ratio = 0.5)))
#> version: "42"
#> ratio: 0.5Both have an _all variant for a YAML stream —
several documents separated by ---, which is a different
thing from a sequence — and yaml_read() /
yaml_write() do the same for files:
yaml_parse_all("a: 1\n---\na: 2\n")
#> [[1]]
#> [[1]]$a
#> [1] 1
#>
#>
#> [[2]]
#> [[2]]$a
#> [1] 2The getting started article documents the conversion rules in full, including the cases that do not round-trip.
tests/testthat/ runs a curated 84-case
yaml-test-suite
subset in every R CMD check; ZUYAML_TEST_SUITE
points it at a full 402-case checkout instead.tools/conformance.R walks the same
corpus but reports rather than asserts — counts per boundary,
failures named, against a baseline pinned in the script.278/279 that is meant to change deliberately rather than
break a build.| Workflow | Jobs, and what they do | When | Runs |
|---|---|---|---|
R-CMD-check.yaml |
R CMD check --as-cran on macOS, Windows and Ubuntu at R
release and oldrel-1, and in the CRAN-like containers
clang23, ubuntu-clang and
ubuntu-gcc16 — the package vendors C11, so the compiler
CRAN uses is the one that has to see it |
push, PR | view |
hardening.yaml |
full-test-suite — all 402 yaml-test-suite cases, then
tools/conformance.R against its pinned baseline.
fuzz — the wrapper fuzzer at 20,000 iterations |
push, PR, weekly | view |
native-checks.yaml |
sanitizers — UBSan on a runner, ASan in the
clang-asan and gcc-asan images.
valgrind, lto, rchk (failing on
findings), and gctorture at step 500 on every push with the
sensitive step-20 run weekly |
push, PR, weekly | view |
coverage.yaml |
covr, with a per-file breakdown in the job summary |
push, PR | view |
R-CMD-check.yaml, native-checks.yaml and
coverage.yaml call the reusable workflows in r-actions rather than
keeping a second copy here. hardening.yaml does not: it
holds the two checks that are specific to this package.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.