@@ -3,21 +3,19 @@ use quote::quote;
33use syn:: Expr ;
44use syn_rsx:: { parse, Node , NodeType } ;
55
6- fn walk_nodes ( nodes : Vec < Node > ) -> Result < ( String , Vec < Expr > ) , proc_macro2 :: TokenStream > {
6+ fn walk_nodes ( nodes : Vec < Node > ) -> ( String , Vec < Expr > ) {
77 let mut out = String :: new ( ) ;
88 let mut values = vec ! [ ] ;
99 for node in nodes {
1010 match node. node_type {
1111 NodeType :: Element => {
1212 let name = node. name_as_string ( ) . unwrap ( ) ;
1313 out. push_str ( & format ! ( "<{}" , name) ) ;
14- match walk_nodes ( node. attributes ) {
15- Ok ( ( html_string, attribute_values) ) => {
16- out. push_str ( & html_string) ;
17- values. extend ( attribute_values) ;
18- }
19- Err ( error) => return Err ( error) ,
20- }
14+
15+ // attributes
16+ let ( html_string, attribute_values) = walk_nodes ( node. attributes ) ;
17+ out. push_str ( & html_string) ;
18+ values. extend ( attribute_values) ;
2119 out. push_str ( ">" ) ;
2220
2321 // https://developer.mozilla.org/en-US/docs/Glossary/Empty_element
@@ -27,13 +25,10 @@ fn walk_nodes(nodes: Vec<Node>) -> Result<(String, Vec<Expr>), proc_macro2::Toke
2725 _ => ( ) ,
2826 }
2927
30- match walk_nodes ( node. children ) {
31- Ok ( ( html_string, children_values) ) => {
32- out. push_str ( & html_string) ;
33- values. extend ( children_values) ;
34- }
35- Err ( error) => return Err ( error) ,
36- } ;
28+ // children
29+ let ( html_string, children_values) = walk_nodes ( node. children ) ;
30+ out. push_str ( & html_string) ;
31+ values. extend ( children_values) ;
3732
3833 out. push_str ( & format ! ( "</{}>" , name) ) ;
3934 }
@@ -49,13 +44,9 @@ fn walk_nodes(nodes: Vec<Node>) -> Result<(String, Vec<Expr>), proc_macro2::Toke
4944 values. push ( node. value . unwrap ( ) ) ;
5045 }
5146 NodeType :: Fragment => {
52- match walk_nodes ( node. children ) {
53- Ok ( ( html_string, children_values) ) => {
54- out. push_str ( & html_string) ;
55- values. extend ( children_values) ;
56- }
57- Err ( error) => return Err ( error) ,
58- } ;
47+ let ( html_string, children_values) = walk_nodes ( node. children ) ;
48+ out. push_str ( & html_string) ;
49+ values. extend ( children_values) ;
5950 }
6051 NodeType :: Comment => {
6152 out. push_str ( "<!-- {} -->" ) ;
@@ -68,18 +59,16 @@ fn walk_nodes(nodes: Vec<Node>) -> Result<(String, Vec<Expr>), proc_macro2::Toke
6859 }
6960 }
7061
71- Ok ( ( out, values) )
62+ ( out, values)
7263}
7364
7465#[ proc_macro]
7566pub fn html_to_string ( tokens : TokenStream ) -> TokenStream {
7667 match parse ( tokens) {
77- Ok ( nodes) => match walk_nodes ( nodes) {
78- Ok ( ( html_string, values) ) => {
79- quote ! { format!( #html_string, #( #values) , * ) }
80- }
81- Err ( error) => error,
82- } ,
68+ Ok ( nodes) => {
69+ let ( html_string, values) = walk_nodes ( nodes) ;
70+ quote ! { format!( #html_string, #( #values) , * ) }
71+ }
8372 Err ( error) => error. to_compile_error ( ) ,
8473 }
8574 . into ( )
0 commit comments