use proc_macro::TokenStream;
use proc_macro2::TokenStream as TokenStream2;
use quote::quote;
use syn::{parse::Parser, punctuated::Punctuated, token::Comma, Path, Result};
pub fn parse_routes(routes: TokenStream) -> Result<TokenStream2> {
let paths = <Punctuated<Path, Comma>>::parse_terminated.parse(routes)?;
Ok(quote! {
|spec_opt: Option<::rocket_okapi::okapi::openapi3::OpenApi>, settings: &::rocket_okapi::settings::OpenApiSettings|
-> Vec<::rocket::Route> {
let mut routes = ::rocket::routes![#paths];
if let Some(spec) = spec_opt {
routes.push(
::rocket_okapi::handlers::OpenApiHandler::new(spec)
.into_route(&settings.json_path)
);
}
routes
}
})
}