@@ -460,19 +460,15 @@ fn parse_field_documentation(
460
460
461
461
// Parse @required: annotations
462
462
if let Some ( required_text) = extract_annotation ( metadata_section, "required" ) {
463
- // Parse boolean value, handling common representations
464
- let required_bool = match required_text. trim ( ) . to_lowercase ( ) . as_str ( ) {
463
+ let required_bool = match required_text. trim ( ) {
465
464
"" => false , // Empty string defaults to false
466
- "true" | "yes" | "1" => true ,
467
- "false" | "no" | "0" => false ,
468
- _ => {
469
- // Default to false for invalid values, but could log a warning in the future
465
+ text => text. parse :: < bool > ( ) . unwrap_or_else ( |_| {
470
466
eprintln ! (
471
467
"Warning: Invalid @required value '{}' for field '{}', defaulting to false" ,
472
- required_text , field_name
468
+ text , field_name
473
469
) ;
474
470
false
475
- }
471
+ } ) ,
476
472
} ;
477
473
required = Some ( required_bool) ;
478
474
}
@@ -2177,17 +2173,17 @@ and includes various formatting.
2177
2173
let result2 = parse_field_documentation ( doc_text2, "field2" ) . unwrap ( ) ;
2178
2174
assert_eq ! ( result2. 0 . required, Some ( false ) ) ;
2179
2175
2180
- // Test "yes " variant
2176
+ // Test "TRUE " variant
2181
2177
let doc_text3 = r#"Required field.
2182
2178
---
2183
- @required: yes "# ;
2179
+ @required: TRUE "# ; // Needs to be lowercase, will default to false, but will log a warning
2184
2180
let result3 = parse_field_documentation ( doc_text3, "field3" ) . unwrap ( ) ;
2185
- assert_eq ! ( result3. 0 . required, Some ( true ) ) ;
2181
+ assert_eq ! ( result3. 0 . required, Some ( false ) ) ;
2186
2182
2187
- // Test "no " variant
2183
+ // Test "FALSE " variant
2188
2184
let doc_text4 = r#"Optional field.
2189
2185
---
2190
- @required: no "# ;
2186
+ @required: FALSE "# ; // Needs to be lowercase, will default to false, but will log a warning
2191
2187
let result4 = parse_field_documentation ( doc_text4, "field4" ) . unwrap ( ) ;
2192
2188
assert_eq ! ( result4. 0 . required, Some ( false ) ) ;
2193
2189
@@ -2383,19 +2379,11 @@ and includes various formatting.
2383
2379
// Test all supported boolean representations for @required
2384
2380
let test_cases = vec ! [
2385
2381
( "true" , Some ( true ) ) ,
2386
- ( "True" , Some ( true ) ) ,
2387
- ( "TRUE" , Some ( true ) ) ,
2388
- ( "yes" , Some ( true ) ) ,
2389
- ( "Yes" , Some ( true ) ) ,
2390
- ( "YES" , Some ( true ) ) ,
2391
- ( "1" , Some ( true ) ) ,
2382
+ ( "True" , Some ( false ) ) , // Need to be lowercase
2383
+ ( "TRUE" , Some ( false ) ) , // Need to be lowercase
2392
2384
( "false" , Some ( false ) ) ,
2393
- ( "False" , Some ( false ) ) ,
2394
- ( "FALSE" , Some ( false ) ) ,
2395
- ( "no" , Some ( false ) ) ,
2396
- ( "No" , Some ( false ) ) ,
2397
- ( "NO" , Some ( false ) ) ,
2398
- ( "0" , Some ( false ) ) ,
2385
+ ( "False" , Some ( false ) ) , // Will default to false, but will log a warning
2386
+ ( "FALSE" , Some ( false ) ) , // Will default to false, but will log a warning
2399
2387
( "maybe" , Some ( false ) ) , // Invalid defaults to false
2400
2388
( "invalid" , Some ( false ) ) ,
2401
2389
] ;
0 commit comments