Commit graph

36 commits

Author SHA1 Message Date
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
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
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
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
508c971416 port error.rs to error_chain, bump version to 0.4.0 2017-05-22 19:20:01 +02:00
lumi
3341d7e692 turns out i was wrong and clippy was right, all hail clippy 2017-05-22 18:49:24 +02:00
lumi
dbcbe7cd9b make clippy happy 2017-05-22 18:45:43 +02:00
lumi
83d80dd235 Add iterators over attributes, nodes and text nodes. Clean up lots of code. Add as_element and as_text on Node. Add some inline annotations. 2017-05-14 16:38:56 +02:00
lumi
33f9dee31f move use std::iter::FromIterator to tests 2017-05-03 18:39:40 +02:00
Maxime “pep” Buquet
e9d33e5e7e Implement From<Element> for String and use it for fmt::Debug 2017-05-02 16:32:32 +01:00
Bastien Orivel
f87e2442d4 Use a BTreeMap<String, String> instead of a Vec<Attribute> to store attributes
This way we don't need to reimplement PartialEq for Element. It's also
way easier to get an attribute by name as we don't need to iterate over
every attribute to see if it exists.

The only side effect is that now, in the Debug output, attributes are
automatically sorted by names instead of being sorted by insertion
order.

Fixes #4
2017-04-26 23:44:58 +02:00
lumi
c6f9cc485f Merge branch 'Eijebong/minidom-rs-fix_namespaced_attributes'
# Conflicts:
#	src/tests.rs
2017-04-26 01:02:17 +02:00
Eijebong
0d0c4b76eb Fix the PartialEq implementation for Element
The order of attributes in an `Element` doesn't matter anymore.
`<elem a="b" c="d" />` and `<elem c="d" a="b" />` are now correctly
considered equal.

For that I had to derive `PartialOrd` and `Ord` for `Attribute`.
This allows us to sort cloned vectors of `Attribute` in the `PartialEq`
implementation and compare them instead of the struct `attributes`.

Fixes #3
2017-04-24 21:15:53 +02:00
Eijebong
6f0e88b25b Correctly add namespaced attributes to elements
Instead of adding the local_name of an attribute, if a prefix exists,
add prefix:local_name to allow users to retrieve it via the namespaced
key name.

For example, with this XML:
```
<?xml version="1.0" encoding="utf-8"?>
<root xml:lang="en" >
</root>
```

`root.attr("xml:lang").unwrap()` will now correctly return "en".
`root.attr("lang")` will not retrieve "xml:lang" value anymore.

This is a breaking change.

Fixes #2
2017-04-24 18:19:50 +02:00
Emmanuel Gil Peyrot
9af7d252d7 auto-close elements with no child 2017-04-01 13:34:08 +01:00
Emmanuel Gil Peyrot
f301f2cb10 make Debug on Element return valid XML 2017-04-01 13:34:08 +01:00
lumi
7c04aff416 overhauling the library, made tests pass 2017-03-08 20:34:17 +01:00