The test case which is added fails to compile unless one puts the `parent` field before the `id` field. The cause is explained somewhat by the change, but I'll spell it out here nontheless. Previously, the loop in `Compound::make_as_item_iter_statemachine` assumed that the serialisation order of fields would match their declaration order. That is not generally true: attributes must be serialised before element content, because they must be emitted before the element header is closed. This change thus splits the generated states into "header" states (for everything before the end of the element header (think `>`)) and "body" states (for everything after and including the end of the element header). After all fields have been processed, we can then add the data fields of the body fields to the header states so that they are carried through the generated state machine until they are needed in the body.
68 lines
3.2 KiB
Text
68 lines
3.2 KiB
Text
Version NEXT:
|
|
0000-00-00 Jonas Schäfer <jonas@zombofant.net>
|
|
* Breaking
|
|
- The methods of `TextCodec<T>` now have `&self` receivers. This also
|
|
implies that `#[xml(text(codec = ..))]` now takes expressions instead
|
|
of type paths.
|
|
|
|
Because all implementations provided by `xso` were in fact unit
|
|
structs, this should not change most invocations, with one exception:
|
|
The type argument of `Base64` was removed. Replace all `Base64<Foo>`
|
|
references with `Base64.filtered(Foo)` to update your code.
|
|
|
|
This change overall allows for more flexibility in the implementation
|
|
of text codecs.
|
|
* Added
|
|
- Support for child elements in derive macros. Child elements may also
|
|
be wrapped in Option or Box or in containers like Vec or HashSet.
|
|
- Support for overriding the names of the types generated by the derive
|
|
macros.
|
|
- Support for deriving FromXml and AsXml on enums.
|
|
- Support for extracting data from child elements without intermediate
|
|
structs.
|
|
- Support for collecting all unknown children in a single field as
|
|
collection of `minidom::Element`, or one unknown child as a
|
|
`minidom::Element`, or zero or one unknown children as an
|
|
`Option<minidom::Element>`.
|
|
- Support for "transparent" structs (newtype-like patterns for XSO).
|
|
- FromXmlText and AsXmlText are now implemented for jid::NodePart,
|
|
jid::DomainPart, and jid::ResourcePart (!485)
|
|
- Support for optional child elements, the presence of which are
|
|
translated into a boolean (`#[xml(flag)]`).
|
|
- Generic TextCodec implementation for all base64 engines provided by
|
|
the base64 crate (if the `base64` feature is enabled).
|
|
- New `codec` field on `attribute` meta, to support decoding and
|
|
encoding using any `TextCodec`.
|
|
- Support for `no_std` usage (the alloc crate is required, though).
|
|
- Add a PrintRawXml helper struct to be able to display raw xml, useful
|
|
for debug logs.
|
|
- Support to selectively discard attributes or text content during
|
|
parsing (!552).
|
|
- Implement `AsXml` and `FromXml` for serde_json::Value` behind
|
|
`serde_json` feature.
|
|
- Support for a post-deserialization callback function call. (!553)
|
|
* Changes
|
|
- Generated AsXml iterator and FromXml builder types are now
|
|
doc(hidden), to not clutter hand-written documentation with auto
|
|
generated garbage (something certain big tech companies could take
|
|
an example of, honestly).
|
|
- Fixed bug where putting an attribute field below any non-attribute
|
|
field in a struct definition would cause a compile-time error when
|
|
deriving `AsXml`.
|
|
|
|
Version 0.1.2:
|
|
2024-07-26 Jonas Schäfer <jonas@zombofant.net>
|
|
* Added
|
|
- FromXmlText and AsXmlText are now implemented on char.
|
|
* Fixed
|
|
- Docs build on docs.rs now shows feature-gated items.
|
|
|
|
Version 0.1.1:
|
|
2024-07-25 Maxime “pep” Buquet <pep@bouah.net>
|
|
* Added
|
|
- Import various text codecs from parsers: FixedHex, ColonSeparatedHex,
|
|
EmptyAsError.
|
|
|
|
Version 0.1.0:
|
|
2024-07-25 Jonas Schäfer <jonas@zombofant.net>
|
|
* Initial release of this crate
|