8e2b3938
—
vpzomtrrfrt 5 years ago
Add support for raw identifiers (#19)
render_macros/src/element_attributes.rs
CHANGED
|
@@ -2,6 +2,7 @@ use crate::children::Children;
|
|
|
2
2
|
use crate::element_attribute::ElementAttribute;
|
|
3
3
|
use quote::{quote, ToTokens};
|
|
4
4
|
use std::collections::HashSet;
|
|
5
|
+
use syn::ext::IdentExt;
|
|
5
6
|
use syn::parse::{Parse, ParseStream, Result};
|
|
6
7
|
use syn::spanned::Spanned;
|
|
7
8
|
|
|
@@ -122,9 +123,9 @@ impl<'a> ToTokens for SimpleElementAttributes<'a> {
|
|
|
122
123
|
.iter()
|
|
123
124
|
.map(|attribute| {
|
|
124
125
|
let mut iter = attribute.ident().iter();
|
|
125
|
-
let first_word = iter.next().unwrap();
|
|
126
|
+
let first_word = iter.next().unwrap().unraw();
|
|
126
127
|
let ident = iter.fold(first_word.to_string(), |acc, curr| {
|
|
127
|
-
format!("{}-{}", acc, curr)
|
|
128
|
+
format!("{}-{}", acc, curr.unraw())
|
|
128
129
|
});
|
|
129
130
|
let value = attribute.value_tokens();
|
|
130
131
|
|
render_tests/src/lib.rs
CHANGED
|
@@ -20,6 +20,17 @@ pub fn works_with_raw() {
|
|
|
20
20
|
assert_eq!(actual, "<div><Hello /></div>");
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
#[test]
|
|
24
|
+
pub fn works_with_raw_ident() {
|
|
25
|
+
use pretty_assertions::assert_eq;
|
|
26
|
+
|
|
27
|
+
let actual = render::html! {
|
|
28
|
+
<input r#type={"text"} />
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
assert_eq!(actual, r#"<input type="text"/>"#);
|
|
32
|
+
}
|
|
33
|
+
|
|
23
34
|
#[test]
|
|
24
35
|
pub fn element_ordering() {
|
|
25
36
|
use pretty_assertions::assert_eq;
|