Parse raw elements, attributes, and web components in rsx (#2655)
* parse raw elements and attributes in rsx --------- Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
This commit is contained in:
1 parent
fa4e5dbf62
commit
3bb9a535d8
6 files changed
+42
-9
No files matched your search
@@ -5,6 +5,7 @@ use crate::innerlude::*;
|
||||
use proc_macro2::{Span, TokenStream as TokenStream2};
|
||||
use quote::ToTokens;
|
||||
use syn::{
|
||||
ext::IdentExt,
|
||||
parse::{Parse, ParseStream},
|
||||
spanned::Spanned,
|
||||
token::{self},
|
||||
@@ -72,7 +73,7 @@ impl Parse for BodyNode {
|
||||
|
||||
// If there's an ident immediately followed by a dash, it's a web component
|
||||
// Web components support no namespacing, so just parse it as an element directly
|
||||
if stream.peek(Ident) && stream.peek2(Token![-]) {
|
||||
if stream.peek(Ident::peek_any) && stream.peek2(Token![-]) {
|
||||
return Ok(BodyNode::Element(stream.parse::<Element>()?));
|
||||
}
|
||||
|
||||
@@ -86,8 +87,8 @@ impl Parse for BodyNode {
|
||||
//
|
||||
// example:
|
||||
// div {}
|
||||
if stream.peek(Ident) && !stream.peek2(Token![::]) {
|
||||
let ident = stream.fork().parse::<Ident>().unwrap();
|
||||
if stream.peek(Ident::peek_any) && !stream.peek2(Token![::]) {
|
||||
let ident = parse_raw_ident(&stream.fork()).unwrap();
|
||||
let el_name = ident.to_string();
|
||||
let first_char = el_name.chars().next().unwrap();
|
||||
|
||||
|
||||
Reference in new issue
Block a user