Add docs to method_builder
This commit is contained in:
		
							parent
							
								
									dfa61d203a
								
							
						
					
					
						commit
						0684b4681a
					
				| @ -1,17 +1,27 @@ | ||||
| use quote::quote; | ||||
| 
 | ||||
| use crate::generate::util; | ||||
| 
 | ||||
| pub struct MethodBuilder { | ||||
|     method_name: syn::Ident, | ||||
|     url: String, | ||||
|     auth_module_path: proc_macro2::TokenStream, | ||||
|     return_type: Option<proc_macro2::TokenStream>, | ||||
|     description: Option<String>, | ||||
| } | ||||
| 
 | ||||
| impl MethodBuilder { | ||||
|     pub fn new(method_name: &syn::Ident, url: &str) -> Self { | ||||
|     pub fn new( | ||||
|         method_name: &syn::Ident, | ||||
|         url: &str, | ||||
|         auth_module_path: proc_macro2::TokenStream, | ||||
|     ) -> Self { | ||||
|         Self { | ||||
|             method_name: method_name.clone(), | ||||
|             url: url.to_string(), | ||||
|             auth_module_path, | ||||
|             return_type: None, | ||||
|             description: None, | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @ -20,6 +30,11 @@ impl MethodBuilder { | ||||
|         self | ||||
|     } | ||||
| 
 | ||||
|     pub fn description(mut self, value: &Option<String>) -> Self { | ||||
|         self.description = value.clone(); | ||||
|         self | ||||
|     } | ||||
| 
 | ||||
|     pub fn build(&self) -> proc_macro2::TokenStream { | ||||
|         let method_name = &self.method_name; | ||||
|         let (return_type, parse_type) = match &self.return_type { | ||||
| @ -27,18 +42,22 @@ impl MethodBuilder { | ||||
|             None => (quote! { String }, quote! { .text() }), | ||||
|         }; | ||||
|         let url = &self.url; | ||||
|         let auth_module_path = &self.auth_module_path; | ||||
| 
 | ||||
|         quote! { | ||||
|             pub async fn #method_name(&self) -> Result<#return_type> { | ||||
|                 let res = self.auth | ||||
|                     .authenticated_client(#url) | ||||
|                     .send() | ||||
|                     .await? | ||||
|                     #parse_type | ||||
|                     .await?; | ||||
|         util::add_docs( | ||||
|             &self.description, | ||||
|             quote! { | ||||
|                 pub async fn #method_name(&self) -> Result<#return_type> { | ||||
|                     let res = #auth_module_path | ||||
|                         .authenticated_client(#url) | ||||
|                         .send() | ||||
|                         .await? | ||||
|                         #parse_type | ||||
|                         .await?; | ||||
| 
 | ||||
|                 Ok(res) | ||||
|             } | ||||
|         } | ||||
|                     Ok(res) | ||||
|                 } | ||||
|             }, | ||||
|         ) | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| use crate::{generate::util, parser}; | ||||
| use quote::quote; | ||||
| 
 | ||||
| use super::{method_builder::MethodBuilder, return_type::create_return_type}; | ||||
| use crate::parser; | ||||
| 
 | ||||
| pub fn create_method_without_params( | ||||
|     group: &parser::ApiGroup, | ||||
| @ -8,19 +9,18 @@ pub fn create_method_without_params( | ||||
|     method_name: proc_macro2::Ident, | ||||
|     url: &str, | ||||
| ) -> (proc_macro2::TokenStream, Option<proc_macro2::TokenStream>) { | ||||
|     let res = match create_return_type(group, method) { | ||||
|     let builder = MethodBuilder::new(&method_name, url, quote! { self.auth }) | ||||
|         .description(&method.description); | ||||
| 
 | ||||
|     match create_return_type(group, method) { | ||||
|         Some((return_type_name, return_type)) => ( | ||||
|             MethodBuilder::new(&method_name, url) | ||||
|                 .return_type(&return_type_name) | ||||
|                 .build(), | ||||
|             builder.return_type(&return_type_name).build(), | ||||
|             Some(return_type), | ||||
|         ), | ||||
|         None => ( | ||||
|             MethodBuilder::new(&method_name, url).build(), | ||||
|             builder.build(), | ||||
|             // assume that all methods without a return type returns a string
 | ||||
|             None, | ||||
|         ), | ||||
|     }; | ||||
| 
 | ||||
|     (util::add_docs(&method.description, res.0), res.1) | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user