Fixes: https://github.com/kdl-org/kdl-rs/issues/32
This implements a proposed draft of a KQL engine,
allowing CSS selector-style querying of KDL documents (and nodes)
in a variety of different ways.
This commit includes a whole bunch of fixes, some of which are significant changes to the parser and some related functionality. But I consider all changes to be bugfixes because they were compliance failures.
This new version of kdl-rs is a complete rewrite that introduces
a formatting-aware-and-preserving parser, much like toml_edit et al.
BREAKING CHANGE: Completely new API and bumped MSRV to 1.56.0.
* Add From impls for KdlNodeValue
Most clients probably don't need to create these directly, but we may as
well make it easy for them.
* Add TryFrom impls to convert from KdlNodeValue to underlying types
This includes converting from borrowed values, which will produce `&str`
instead of `String`.
* Add line and column numbers to KdlError
These numbers are calculated using our `newline` rule, as I'm not aware
of any standard for how to calculate line numbers in error messages.
The error retains the original `offset` field as well, but it's now
expressed in characters rather than bytes.
* Clean up error handling in parse_document()
We don't need to worry about `Incomplete` errors, the `complete` family
of parsers (which we're using) doesn't ever produce those. We can use
the `.finish()` function to unwrap the error instead, so we don't have
to worry about the underlying error types.