Commit graph

78 commits

Author SHA1 Message Date
5aee776f66 Update to edition 2018
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-09-13 03:18:07 +02:00
Emmanuel Gil Peyrot
11a5c49470 Implement std::error::Error for Error.
This was removed in 0.11.1 with the removal of failure, but is used by
people so let’s reintroduce it.

The cause of an XmlError is pending on this PR from quick-xml:
https://github.com/tafia/quick-xml/pull/170

Fixes #15.
Fixes #18.
2019-09-07 16:04:13 +02:00
Emmanuel Gil Peyrot
17f902b503 Update to quick-xml 0.16. 2019-09-05 21:31:42 +02:00
Emmanuel Gil Peyrot
b4035d1227 Remove failure. 2019-09-05 20:15:20 +02:00
Emmanuel Gil Peyrot
a91252c861 Make comments optional.
Add a default "comments" feature to transform comments into errors when
unset.

This is so that XMPP implementations don’t have to care about comments,
as they can’t happen in the stream.
2019-08-22 18:11:22 +02:00
1f96d82cb8
Remove trailing whitespace
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-07-27 13:14:37 +02:00
aacfcc58b9
Change unnecessary mut variable to default immutable
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-06-12 18:22:51 +02:00
Emmanuel Gil Peyrot
1496819546 Implement a nicer Debug for NamespaceSet
The existing one was quite hard to parse visually, this makes it a lot
easier to understand what is what.
2019-02-27 20:00:02 +01:00
Emmanuel Gil Peyrot
f68826057b Fix clippy lints 2019-02-21 21:06:23 +01:00
lumi
f0dd03d633 Split Node off into its own module: node.rs 2018-12-23 15:59:13 +01:00
lumi
c5c8dee20a Get rid of IntoElements, replace it with Into<Node> and <T: Into<Node> IntoIterator<Item = T>. This is a backwards-incompatible change, but should require minimal changes.
Doing this splits the `append` method in `ElementBuilder` into two methods. `append` now appends exactly one node, while `append_all` appends an iterator of nodes.

Add `remove_child`, which removes the first child that has a specific name and namespace, then returns it if it exists.

Add a lot of convenience methods on `Node`: `as_text_mut`, `as_element_mut`, `into_text`, `into_element`.
2018-12-23 15:42:50 +01:00
Valentin Lorentz
f1f5f5df11 Fix doc to reflect the switch from xml-rs to quick-xml. 2018-06-23 12:06:18 +00:00
lumi
fac64400f1 Put the tests in element.rs into a module block. 2018-05-29 16:22:22 +02:00
Emmanuel Gil Peyrot
7ed4be96eb impl IntoAttributeValue for std::net::IpAddr 2018-05-29 16:03:44 +02:00
lumi
4f588f615d Fix CDATA handling, add relevant test, update CHANGELOG, bump version to 0.9.1. 2018-05-29 15:59:36 +02:00
Matt Bilker
96f223b7e3
bump version to 0.9.0 and upgrade quick-xml to 0.12.1 2018-04-10 21:01:18 -04:00
lumi
8924d2d594 Merge branch 'linkmauve/minidom-rs-failure'
# Conflicts:
#	src/tests.rs
2018-02-18 21:32:51 +01:00
Emmanuel Gil Peyrot
236582b24e update quick_xml and migrate from error-chain to failure 2018-02-18 20:45:09 +01:00
Emmanuel Gil Peyrot
055caa8e24 add tests for some XML errors 2018-02-18 19:41:03 +01:00
Yue Liu
f456600efd Support comment and write to quick-xml Writer 2018-01-09 23:29:48 -08:00
lumi
d079f0503a make sure that my tests actually work... 2018-01-01 14:34:24 +01:00
lumi
118bbb5462 add the spectest.xml from https://gitlab.com/lumi/minidom-rs/issues/8 2018-01-01 14:28:17 +01:00
lumi
cdb2cb8d86 try not to allocate memory when comparing ending tags with starting tags 2018-01-01 14:01:03 +01:00
lumi
0e76e5211d Merge branch 'compare-with-prefix' into 'master'
Compare with prefix

See merge request lumi/minidom-rs!23
2018-01-01 12:26:19 +00:00
Maxime “pep” Buquet
9959abbb25 Be explicit about quick-xml Events we are handling 2017-12-31 16:31:26 +00:00
Maxime “pep” Buquet
db70487a31 Change prefix fn to return Option<&str> 2017-12-31 15:24:28 +00:00
Maxime “pep” Buquet
9c498044ee element: Add tests for Element::from_reader 2017-12-31 07:19:24 +01:00
Maxime “pep” Buquet
e250e9cf2c Add doctest for prefix fn 2017-12-30 17:26:15 +01:00
Maxime “pep” Buquet
1c3a701d2e element: Fix element name comparison in from_reader
quick-xml's Events seem to always return prefixed names, and the
from_reader function, when comparing name of the pop-ed element, and
received event element, was using the unprefixed name to compare.
2017-12-30 17:26:15 +01:00
Emmanuel Gil Peyrot
df76bc147a fix clippy warnings 2017-11-12 19:58:07 +00:00
lumi
f4debf1bbf Merge branch 'tafia/minidom-rs-quick_xml_optim' 2017-11-08 18:19:05 +01:00
Emmanuel Gil Peyrot
b49ea5175d implement IntoElements on Into<Element> instead of Element 2017-08-27 01:36:18 +01:00
lumi
87a19e5e58 Merge branch 'element_has_ns' into 'master'
add Element::has_ns(&self, NS)

See merge request !16
2017-08-20 15:03:14 +00:00
Emmanuel Gil Peyrot
89ab8d9aca fix a FIXME, break value is now stable 2017-08-19 00:34:44 +01:00
Astro
8af3e50311 add Element::has_ns(&self, NS) 2017-08-19 01:17:45 +02:00
Astro
b141559081 rename namespaces mod to namespace_set 2017-08-13 17:29:38 +02:00
Astro
7297dbc5fd namespaces: add some tests 2017-08-13 02:48:28 +02:00
Astro
0148790a01 move NamespaceSet to namespaces mod 2017-08-13 02:35:24 +02:00
Astro
7d2699e08e NamespaceSet::set_parent(): don't require a full Element
by passing just a reference to a NamespaceSet we could reuse this for
xmlns elision in the serialization code.
2017-08-13 02:28:44 +02:00
Astro
98fd71fd3f NamespaceSet: rm unneeded cast 2017-08-13 02:26:45 +02:00
Astro
26f03c27ed optimize Element::write_to_inner() with CoW 2017-08-13 02:24:40 +02:00
Astro
a01cf553ae switch Element namespaces to NamespaceSet with parent reference 2017-08-13 02:24:34 +02:00
Astro
77bc215cba tests: add namespace inheritance tests 2017-08-13 02:19:17 +02:00
Astro
052c46635a escape text and attribute values 2017-08-12 02:05:18 +02:00
Johann Tuffe
444b78c63a unescape_and_decode_value for element attributes 2017-07-08 12:18:15 +08:00
Bastien Orivel
9cec9fce9b Replace xml-rs by quick_xml
quick_xml is way faster than xml-rs

Here is an example with a quick atom parser:
    With xml-rs:
        test parse_factorio_atom ... bench:   3,295,678 ns/iter (+/- 165,851)
    With quick_xml:
        test parse_factorio_atom ... bench:     203,215 ns/iter (+/- 13,485)

Unfortunately I had to break the API for this change to happen.
* Element::from_reader now takes `R: BufRead` instead of `R: Read`
* Element::write_to now takes `W: io::Write` instead of `EventWriter<W: Write>`

This migration also allow us to have a write_to function which assumes
we're already in a given namespace (see `write_to_in_namespace`).
2017-06-10 17:17:19 +02:00
lumi
d6a9e6e9ea implement ToAttributeValue on integral types, bump version 2017-05-28 00:25:57 +02:00
Emmanuel Gil Peyrot
638866fa4c implement IntoAttributeValue for u32, u16 and u8 2017-05-27 22:56:17 +01:00
Emmanuel Gil Peyrot
d63c7b991d implement IntoAttributeValue for usize 2017-05-27 22:45:22 +01:00
lumi
9d45230c17 should re-export more things under the error module 2017-05-22 19:30:52 +02:00