api-macro: get enum description from doc comments

instead of:
    #[api(description: "Some description.")]
    pub enum { ... }

support:
    #[api]
    /// Some description.
    pub enum { ... }

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
Wolfgang Bumiller 2019-12-04 11:52:03 +01:00
parent 7609cf2bd4
commit f9d775924d
2 changed files with 10 additions and 3 deletions

View File

@ -9,7 +9,7 @@ use syn::punctuated::Punctuated;
use syn::Token;
use super::Schema;
use crate::util::{JSONObject, JSONValue, FieldName};
use crate::util::{self, FieldName, JSONObject, JSONValue};
/// `parse_macro_input!` expects a TokenStream_1
struct AttrArgs {
@ -44,7 +44,13 @@ pub fn handle_enum(
}
let schema = {
let schema: Schema = attribs.try_into()?;
let mut schema: Schema = attribs.try_into()?;
if schema.description.is_none() {
let (comment, span) = util::get_doc_comments(&enum_ty.attrs)?;
schema.description = Some(syn::LitStr::new(comment.trim(), span));
}
let mut ts = TokenStream::new();
schema.to_typed_schema(&mut ts)?;
ts

View File

@ -23,8 +23,9 @@ impl OkString {
.schema();
}
#[api(description: "A selection of either a, B or C")]
#[api]
#[derive(Deserialize)]
/// A selection of either a, B or C
pub enum Selection {
#[serde(rename = "a")]
A,