@@ -3,6 +3,12 @@ use std::collections::{BTreeMap, HashMap};
33use syn:: { Fields , Type } ;
44use vespera_core:: schema:: { Reference , Schema , SchemaRef , SchemaType } ;
55
6+ /// Strips the `r#` prefix from raw identifiers.
7+ /// E.g., `r#type` becomes `type`.
8+ pub fn strip_raw_prefix ( ident : & str ) -> & str {
9+ ident. strip_prefix ( "r#" ) . unwrap_or ( ident)
10+ }
11+
612pub fn extract_rename_all ( attrs : & [ syn:: Attribute ] ) -> Option < String > {
713 for attr in attrs {
814 if attr. path ( ) . is_ident ( "serde" ) {
@@ -394,7 +400,7 @@ pub fn parse_enum_to_schema(
394400 let mut enum_values = Vec :: new ( ) ;
395401
396402 for variant in & enum_item. variants {
397- let variant_name = variant. ident . to_string ( ) ;
403+ let variant_name = strip_raw_prefix ( & variant. ident . to_string ( ) ) . to_string ( ) ;
398404
399405 // Check for variant-level rename attribute first (takes precedence)
400406 let enum_value = if let Some ( renamed) = extract_field_rename ( & variant. attrs ) {
@@ -421,7 +427,7 @@ pub fn parse_enum_to_schema(
421427 let mut one_of_schemas = Vec :: new ( ) ;
422428
423429 for variant in & enum_item. variants {
424- let variant_name = variant. ident . to_string ( ) ;
430+ let variant_name = strip_raw_prefix ( & variant. ident . to_string ( ) ) . to_string ( ) ;
425431
426432 // Check for variant-level rename attribute first (takes precedence)
427433 let variant_key = if let Some ( renamed) = extract_field_rename ( & variant. attrs ) {
@@ -505,7 +511,7 @@ pub fn parse_enum_to_schema(
505511 let rust_field_name = field
506512 . ident
507513 . as_ref ( )
508- . map ( |i| i . to_string ( ) )
514+ . map ( |i| strip_raw_prefix ( & i . to_string ( ) ) . to_string ( ) )
509515 . unwrap_or_else ( || "unknown" . to_string ( ) ) ;
510516
511517 // Check for field-level rename attribute first (takes precedence)
@@ -608,7 +614,7 @@ pub fn parse_struct_to_schema(
608614 let rust_field_name = field
609615 . ident
610616 . as_ref ( )
611- . map ( |i| i . to_string ( ) )
617+ . map ( |i| strip_raw_prefix ( & i . to_string ( ) ) . to_string ( ) )
612618 . unwrap_or_else ( || "unknown" . to_string ( ) ) ;
613619
614620 // Check for field-level rename attribute first (takes precedence)
0 commit comments