Skip to content

v0.9.0

Latest
Compare
Choose a tag to compare
@stoically stoically released this 10 Nov 13:36
· 6 commits to main since this release
734000a

BREAKING

  • Node was converted to an enum similar to syn's Expr. This was primarily done because the old API required manual documentation lookups to decide whether it is safe to unwrap a node name or value based on the Node::node_type. This is not really type safe or rusty, and hence the decision was made to move to a type safe API. There's also no measurable impact on performance. If you have feedback or concerns regarding this change, feel free to voice them in #26.

    Basically,

    match node.node_type {
      NodeType::Element => node.name_as_string().unwrap(),
      NodeType::Attribute => node.name_as_string().unwrap(),
      NodeType::Text => node.value_as_string().unwrap(),
      ...
    }

    becomes

    match node {
      Node::Element(element) => element.name.to_string(),
      Node::Attribute(attribute) => attribute.key.to_string(),
      Node::Text(text) => String::try_from(&text.value).unwrap(),
      ...
    }
  • NodeName::span was dropped, since NodeName already implements syn::spanned::Spanned, which gives you the span method if you import the trait accordingly.

  • NodeName::Colon and NodeName::Dash were merged into NodeName::Punctuated. This was done to allow attribute names like on:some-event. Thanks @gbj for working on it. (#34)

Everything else is in the CHANGELOG and the docs.