Allow arbitrary expressions in doc/title/description attributes (#327)

This commit is contained in:
Graham Esau 2024-08-24 14:35:30 +01:00 committed by GitHub
parent 5547e77bcd
commit df06fc5f66
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 206 additions and 159 deletions

View file

@ -1,5 +1,5 @@
mod util;
use schemars::{generate::SchemaSettings, JsonSchema};
use schemars::JsonSchema;
use util::*;
#[allow(dead_code)]
@ -15,6 +15,9 @@ struct MyStruct {
my_undocumented_bool: bool,
/// A unit struct instance
my_unit: MyUnitStruct,
#[doc = concat!("# Documented ", "bool")]
#[doc = concat!("This bool is documented")]
my_documented_bool: bool,
}
/// # A Unit
@ -57,12 +60,6 @@ fn doc_comments_struct() -> TestResult {
test_default_generated_schema::<MyStruct>("doc_comments_struct")
}
#[test]
fn doc_comments_struct_ref_siblings() -> TestResult {
let settings = SchemaSettings::draft2019_09();
test_generated_schema::<MyStruct>("doc_comments_struct_ref_siblings", settings)
}
#[test]
fn doc_comments_enum() -> TestResult {
test_default_generated_schema::<MyEnum>("doc_comments_enum")
@ -81,6 +78,8 @@ struct OverrideDocs {
/// Also overridden
#[schemars(title = "", description = "")]
my_undocumented_bool: bool,
#[schemars(title = concat!("Documented ", "bool"), description = "Capitalized".to_uppercase())]
my_documented_bool: bool,
}
#[test]

View file

@ -12,10 +12,16 @@
},
"my_undocumented_bool": {
"type": "boolean"
},
"my_documented_bool": {
"title": "Documented bool",
"description": "CAPITALIZED",
"type": "boolean"
}
},
"required": [
"my_int",
"my_undocumented_bool"
"my_undocumented_bool",
"my_documented_bool"
]
}

View file

@ -15,12 +15,18 @@
"my_unit": {
"description": "A unit struct instance",
"$ref": "#/$defs/MyUnitStruct"
},
"my_documented_bool": {
"title": "Documented bool",
"description": "This bool is documented",
"type": "boolean"
}
},
"required": [
"my_int",
"my_undocumented_bool",
"my_unit"
"my_unit",
"my_documented_bool"
],
"$defs": {
"MyUnitStruct": {

View file

@ -1,31 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2019-09/schema",
"title": "This is the struct's title",
"description": "This is the struct's description.",
"type": "object",
"properties": {
"my_int": {
"title": "An integer",
"type": "integer",
"format": "int32"
},
"my_undocumented_bool": {
"type": "boolean"
},
"my_unit": {
"description": "A unit struct instance",
"$ref": "#/$defs/MyUnitStruct"
}
},
"required": [
"my_int",
"my_undocumented_bool",
"my_unit"
],
"$defs": {
"MyUnitStruct": {
"title": "A Unit",
"type": "null"
}
}
}