~repos /tide-jsx

#rust#proc-macro#jsx

git clone https://pyrossh.dev/repos/tide-jsx.git

Tide + JSX


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;