feat: Added iced-ui and updated typegen for docs
This commit is contained in:
@@ -60,14 +60,22 @@ pub struct Property {
|
||||
impl Property {
|
||||
pub fn to_string(&self) -> String {
|
||||
let out = match self._type {
|
||||
Some(Types::String) => "String".to_string(),
|
||||
Some(Types::String) => match self.format.as_deref() {
|
||||
Some("uuid") => "uuid::Uuid".to_string(),
|
||||
Some("date-time") => "jiff::Zoned".to_string(),
|
||||
_ => "String".to_string(),
|
||||
},
|
||||
Some(Types::Integer) => match self.format.as_deref() {
|
||||
Some("int32") => "i32".to_string(),
|
||||
Some("int64") => "i64".to_string(),
|
||||
_ => "i32".to_string(),
|
||||
},
|
||||
Some(Types::Boolean) => "bool".to_string(),
|
||||
Some(Types::Number) => "f64".to_string(),
|
||||
Some(Types::Number) => match self.format.as_deref() {
|
||||
Some("double") => "f64".to_string(),
|
||||
Some("float") => "f32".to_string(),
|
||||
_ => "f64".to_string(),
|
||||
},
|
||||
Some(Types::Array) => {
|
||||
if let Some(ref items) = self.items {
|
||||
format!("Vec<{}>", items.to_string())
|
||||
@@ -102,6 +110,9 @@ impl Property {
|
||||
out
|
||||
}
|
||||
}
|
||||
pub fn description(&self) -> Option<String> {
|
||||
self.description.clone()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Serialize, serde::Deserialize, Clone)]
|
||||
@@ -144,6 +155,12 @@ fn main() {
|
||||
.map(|(name, _type)| {
|
||||
let og_name = name.clone();
|
||||
let name = modify_keyword(&name.to_snake_case());
|
||||
let _type_desc = _type.description();
|
||||
let _type_desc = if let Some(desc) = &_type_desc {
|
||||
Some(format!(" {}", desc))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let _type = _type.to_string();
|
||||
let _type = if _type.contains(key) {
|
||||
_type.replace(&format!("<{}>", key), format!("<Box<{}>>", key).as_str())
|
||||
@@ -151,8 +168,15 @@ fn main() {
|
||||
_type
|
||||
};
|
||||
syn::Field {
|
||||
attrs: syn::parse_quote! {
|
||||
#[serde(rename = #og_name)]
|
||||
attrs: if let Some(desc) = _type_desc {
|
||||
syn::parse_quote! {
|
||||
#[doc = #desc]
|
||||
#[serde(rename = #og_name)]
|
||||
}
|
||||
} else {
|
||||
syn::parse_quote! {
|
||||
#[serde(rename = #og_name)]
|
||||
}
|
||||
},
|
||||
mutability: syn::FieldMutability::None,
|
||||
vis: syn::Visibility::Public(syn::Token {
|
||||
})
|
||||
.collect::<Vec<syn::Field>>();
|
||||
let key = modify_keyword(key);
|
||||
let desc = value.description.clone();
|
||||
let key = syn::Ident::new(&key.to_pascal_case(), proc_macro2::Span::call_site());
|
||||
let tokens = quote::quote! {
|
||||
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||
pub struct #key {
|
||||
#(#fields),*
|
||||
let tokens = if let Some(desc) = desc {
|
||||
let desc = format!(" {}", desc);
|
||||
quote::quote! {
|
||||
#[doc = #desc]
|
||||
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||
pub struct #key {
|
||||
#(#fields),*
|
||||
}
|
||||
}
|
||||
} else {
|
||||
quote::quote! {
|
||||
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||
pub struct #key {
|
||||
#(#fields),*
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
syn::parse2(tokens).expect("Failed to parse struct")
|
||||
})
|
||||
.collect();
|
||||
@@ -196,11 +233,24 @@ fn main() {
|
||||
.collect::<Vec<syn::Variant>>();
|
||||
let key = modify_keyword(key);
|
||||
let key = syn::Ident::new(&key.to_pascal_case(), proc_macro2::Span::call_site());
|
||||
let tokens = quote::quote! {
|
||||
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub enum #key {
|
||||
#(#variants),*
|
||||
let desc = value.description.clone();
|
||||
let tokens = if let Some(desc) = desc {
|
||||
let desc = format!(" {}", desc);
|
||||
quote::quote! {
|
||||
#[doc = #desc]
|
||||
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub enum #key {
|
||||
#(#variants),*
|
||||
}
|
||||
}
|
||||
} else {
|
||||
quote::quote! {
|
||||
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub enum #key {
|
||||
#(#variants),*
|
||||
}
|
||||
}
|
||||
};
|
||||
syn::parse2(tokens).expect("Failed to parse enum")
|
||||
|
||||
Reference in New Issue
Block a user