Refactor out add_schema_as_property
This commit is contained in:
parent
1a2dafc1a5
commit
60a9869448
6 changed files with 89 additions and 101 deletions
|
|
@ -1,7 +1,6 @@
|
|||
use crate::attr;
|
||||
use attr::Attrs;
|
||||
use proc_macro2::{Ident, Span, TokenStream};
|
||||
use quote::{ToTokens, TokenStreamExt};
|
||||
use proc_macro2::TokenStream;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct SchemaMetadata<'a> {
|
||||
|
|
@ -14,24 +13,6 @@ pub struct SchemaMetadata<'a> {
|
|||
pub default: Option<TokenStream>,
|
||||
}
|
||||
|
||||
impl ToTokens for SchemaMetadata<'_> {
|
||||
fn to_tokens(&self, tokens: &mut TokenStream) {
|
||||
let setters = self.make_setters();
|
||||
if setters.is_empty() {
|
||||
tokens.append(Ident::new("None", Span::call_site()))
|
||||
} else {
|
||||
tokens.extend(quote! {
|
||||
Some({
|
||||
schemars::schema::Metadata {
|
||||
#(#setters)*
|
||||
..Default::default()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> SchemaMetadata<'a> {
|
||||
pub fn from_attrs(attrs: &'a Attrs) -> Self {
|
||||
SchemaMetadata {
|
||||
|
|
@ -46,10 +27,15 @@ impl<'a> SchemaMetadata<'a> {
|
|||
}
|
||||
|
||||
pub fn apply_to_schema(&self, schema_expr: TokenStream) -> TokenStream {
|
||||
quote! {
|
||||
{
|
||||
let schema = #schema_expr;
|
||||
schemars::_private::apply_metadata(schema, #self)
|
||||
let setters = self.make_setters();
|
||||
if setters.is_empty() {
|
||||
schema_expr
|
||||
} else {
|
||||
quote! {
|
||||
schemars::_private::apply_metadata(#schema_expr, schemars::schema::Metadata {
|
||||
#(#setters)*
|
||||
..Default::default()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue