Jonas Schäfer
66233b0150
xso: add support for ignoring unknown children
2024-10-26 17:37:32 +00:00
Jonas Schäfer
290460ba9d
xso: add support for ignoring unknown attributes
2024-10-26 17:37:32 +00:00
Jonas Schäfer
1ecb95881c
xso: add support for extracting tuples
2024-08-11 07:58:12 +02:00
Jonas Schäfer
2ff81b3923
xso: add support for fallible parsing and serialisation
2024-08-11 07:45:05 +02:00
Emmanuel Gil Peyrot
d706b318c3
xmpp-parsers: Remove the generate_element!() macro
...
The last users have now been converted to xso.
2024-08-09 16:08:26 +02:00
Emmanuel Gil Peyrot
2690e62060
xmpp-parsers: Convert roster item to xso
2024-08-09 16:08:26 +02:00
Jonas Schäfer
fb80bb7532
xso: add support for dynamic enums
2024-08-08 15:25:40 +00:00
Jonas Schäfer
fda4a9ff29
xso: implement transparent structs
2024-08-05 15:13:39 +00:00
Emmanuel Gil Peyrot
2df243966f
xmpp-parsers: Convert blocking to xso
2024-08-05 15:02:25 +00:00
Emmanuel Gil Peyrot
4e2af36186
xmpp-parsers: Implement FromXmlText and AsXmlText for default types
...
This allows such default type wrappers to be used in other xso elements.
2024-08-05 15:02:25 +00:00
Jonas Schäfer
0361b5905b
xso: implement catch-all for unknown elements
2024-08-05 15:33:57 +02:00
aa26d98e2a
Check attr="" parse to Some("") in Option<String>
2024-08-05 05:49:14 +00:00
Jonas Schäfer
c7c180feb6
xso: implement support for defaulting extracts
2024-08-04 16:07:14 +02:00
Emmanuel Gil Peyrot
aa518fd6c1
xso-proc: add support for extracting attributes into collections
2024-08-04 13:38:52 +02:00
Jonas Schäfer
8732ca9a28
xso: add support for extracting into collections
2024-08-03 18:19:31 +02:00
Jonas Schäfer
df63c2a78f
xso: allow omission of namespace and name on extracts
...
This is a quality-of-life improvement, as it may save lots of typing in
the common case (see the diff in parsers).
2024-08-03 15:25:46 +02:00
Emmanuel Gil Peyrot
48855843d4
xmpp-parsers: Convert some more elements to xso
2024-08-03 13:21:51 +00:00
Jonas Schäfer
1e0bccc504
parsers: port extracts over to derive macros
2024-08-03 15:17:30 +02:00
Jonas Schäfer
2c5f1f096b
xso: implement support for extracting data from child elements
2024-08-03 15:17:30 +02:00
Jonas Schäfer
6440209f95
xso: reject duplicate children
...
This was an oversight. Even though we apparently don't have tests for
this anywhere, it is what the old functional macros do.
2024-08-03 11:58:19 +00:00
Jonas Schäfer
2b346c4e87
parsers: port more things to derive macros
2024-08-03 13:05:37 +02:00
Jonas Schäfer
93ba2797be
xso-proc: implement support for collections of children
2024-08-03 12:20:04 +02:00
Jonas Schäfer
5c3ed1435f
parsers: delete now-unused generate_element_enum macro
2024-08-03 12:19:42 +02:00
Jonas Schäfer
c028c3b91a
xso: implement exhaustive enums
...
These more closely mirror how enums work currently with the macros.
Non-exhaustive enums may be useful though and kind of were the natural
thing to implement.
2024-08-03 12:19:28 +02:00
Jonas Schäfer
4845715add
xso: implement support for enums
2024-08-01 15:28:22 +02:00
Jonas Schäfer
507a3df652
xso-proc: remove Span information from generated type names
...
By removing that, the lint won't trigger for identifiers with trailing
underscores (which become then embedded underscores which normally trips
the `non_camel_case_types` lint).
2024-08-01 12:53:20 +00:00
Jonas Schäfer
3089832090
xso-proc: remove stripping of trailing _ from type names
...
Users can now rename the generated types altogether, which means that we
do not need this anymore to avoid lints.
2024-08-01 12:53:20 +00:00
Jonas Schäfer
c90752aa51
xso: add support for overriding names of generated types
...
In 1265f4b , we introduced a change which may cause a conflict of type
names when deriving the traits on two different types. While a
workaround existed (use `mod`s to isolate the implementation), that is
ugly.
This commit allows overriding the choice of type names.
2024-08-01 12:53:20 +00:00
Jonas Schäfer
819a869ffb
parsers: replace some more generate_element! calls with derive macros
2024-07-27 09:39:13 +02:00
Jonas Schäfer
cd9f2033f3
xso: add support for boxed children
...
This allows building recursive tree structures.
2024-07-27 08:24:25 +02:00
Jonas Schäfer
01336802b4
xso-proc: add support for optional children
2024-07-27 08:24:25 +02:00
Jonas Schäfer
5d284bbd3a
parsers: port some elements with children to derive macros
2024-07-26 22:31:42 +02:00
Jonas Schäfer
5bd36eccfc
xso-proc: add support for child elements
2024-07-26 22:31:42 +02:00
Emmanuel Gil Peyrot
2eb6ca2f94
xmpp-parsers: Remove util::text_node_codecs
...
This codec system was useful for the previous parser style, but we have
converted them all to xso now!
2024-07-25 18:42:18 +02:00
Emmanuel Gil Peyrot
7b66de1166
xmpp-parsers: Stop reexporting extra symbols
...
Let’s continue reexporting jid and minidom, but not their inner pub
items, users of this crate can go one level deeper if they need that.
Only xso::error::Error is still useful to reexport, as this is part of
the public API of all of our parsers.
2024-07-25 14:36:09 +00:00
Jonas Schäfer
ccf38cdf9b
Port everything over to AsXml
2024-07-24 16:05:06 +02:00
Jonas Schäfer
1367764f85
parsers: use Base64 codec to derive more things
2024-07-02 06:56:30 +02:00
Jonas Schäfer
c83ff286e0
xso-proc: add support for text codecs
...
Text codecs allow to customize the conversion of data from/to XML,
in particular in two scenarios:
1. When the type for which the behaviour is to be defined comes from a
foreign crate, preventing the implementation of
FromXmlText/IntoXmlText.
2. When there is not one obvious, or more than one sensible, way to
convert a value to XML text and back.
2024-07-02 06:56:30 +02:00
Jonas Schäfer
ae30221e3c
xso: only fail on non-whitespace unknown text
...
We hereby ignore whitespace-only unexpected text, because that's
generally harmless.
2024-07-01 08:01:42 +02:00
Jonas Schäfer
1e3c075fbf
parsers: remove now-obsolete JidCodec
2024-07-01 08:01:42 +02:00
Jonas Schäfer
b0803f831b
xso-proc: add support for parsing text content
2024-07-01 08:01:42 +02:00
Jonas Schäfer
0e4865006c
parsers: port more elements to derive macros
2024-06-30 13:14:06 +02:00
Jonas Schäfer
0c57be3e61
xso-proc: add support for defaulting in attribute parsing
2024-06-30 13:05:37 +02:00
Jonas Schäfer
4e9c4883a3
parsers: add xso text trait implementations to types
...
This allows them to be used as attribute in xso-proc derived structs.
2024-06-30 13:05:15 +02:00
Jonas Schäfer
c0fc7f49cf
xso-proc: add support for non-String typed attributes
2024-06-30 13:01:36 +02:00
Jonas Schäfer
6ade419030
xso-proc: improve combinatorial test coverage for attribute fields
...
This is to avoid another regression slip through the test suite, as had
happened in d4d520e (fixed in this commit's parent).
2024-06-25 13:55:07 +00:00
Jonas Schäfer
c0d109d9be
xso-proc: fix renaming attributes using a static item
...
This was broken by d4d520e by accident, and of course we didn't have
tests for that :-).
(we do, now)
2024-06-25 13:55:07 +00:00
Jonas Schäfer
d4d520e1f6
xso-proc: add support for built-in prefixes in attribute names
...
This simplifies the use of built-in XML attributes such as xml:lang.
2024-06-24 12:39:32 +02:00
Jonas Schäfer
84de7fc248
xso-proc: add support for namespaced attributes
2024-06-24 12:39:32 +02:00
Jonas Schäfer
219d682295
xso-proc: add support for renaming attributes
...
This is akin to `#[serde(rename = ..)]` and thus useful.
2024-06-24 11:33:10 +02:00