syn-rsx 0.3.3

syn-powered parser for JSX-like TokenStreams
Documentation

syn-rsx

crates.io page docs.rs page build license: MIT

syn-powered parser for JSX-like TokenStreams. The parsed result is a nested Node structure, similar to the browser DOM.

use quote::quote;
use syn::Expr;
use syn_rsx::parse2;

let tokens = quote! {
    <div foo={bar}>
        <div>"hello"</div>
        <world />
    </div>
};
let nodes = parse2(tokens, None).unwrap();

let node = &nodes[0];
assert_eq!(node.attributes[0].name_as_string().unwrap(), "foo");
assert!({
    if let Some(Expr::Block(_)) = node.attributes[0].value {
        true
    } else {
        false
    }
});

let childs = &node.childs;
assert_eq!(childs.len(), 2);
assert_eq!(childs[0].childs[0].value_as_string().unwrap(), "hello");
assert_eq!(childs[1].name_as_string().unwrap(), "world");