@@ -3,16 +3,27 @@ use std::ops::Deref;
3
3
use convert_case:: { Case , Casing } ;
4
4
use darling:: util:: IdentString ;
5
5
use k8s_version:: Version ;
6
+ use proc_macro2:: Span ;
6
7
use quote:: { ToTokens , format_ident} ;
7
- use syn:: { Ident , spanned:: Spanned } ;
8
+ use syn:: { Ident , Path , spanned:: Spanned } ;
9
+
10
+ pub mod doc_comments;
8
11
9
12
pub trait VersionExt {
10
13
fn as_variant_ident ( & self ) -> IdentString ;
14
+ fn as_module_ident ( & self ) -> IdentString ;
11
15
}
12
16
13
17
impl VersionExt for Version {
14
18
fn as_variant_ident ( & self ) -> IdentString {
15
- format_ident ! ( "{ident}" , ident = self . to_string( ) . to_case( Case :: Pascal ) ) . into ( )
19
+ IdentString :: new ( Ident :: new (
20
+ & self . to_string ( ) . to_case ( Case :: Pascal ) ,
21
+ Span :: call_site ( ) ,
22
+ ) )
23
+ }
24
+
25
+ fn as_module_ident ( & self ) -> IdentString {
26
+ IdentString :: new ( Ident :: new ( & self . to_string ( ) , Span :: call_site ( ) ) )
16
27
}
17
28
}
18
29
@@ -22,7 +33,7 @@ pub trait ContainerIdentExt {
22
33
fn as_cleaned_kubernetes_ident ( & self ) -> IdentString ;
23
34
24
35
/// Transforms the [`IdentString`] into one usable in the [`From`] impl.
25
- fn as_from_impl_ident ( & self ) -> IdentString ;
36
+ fn as_parameter_ident ( & self ) -> IdentString ;
26
37
}
27
38
28
39
impl ContainerIdentExt for Ident {
@@ -31,12 +42,22 @@ impl ContainerIdentExt for Ident {
31
42
IdentString :: new ( ident)
32
43
}
33
44
34
- fn as_from_impl_ident ( & self ) -> IdentString {
45
+ fn as_parameter_ident ( & self ) -> IdentString {
35
46
let ident = format_ident ! ( "__sv_{}" , self . to_string( ) . to_lowercase( ) ) ;
36
47
IdentString :: new ( ident)
37
48
}
38
49
}
39
50
51
+ impl ContainerIdentExt for IdentString {
52
+ fn as_cleaned_kubernetes_ident ( & self ) -> IdentString {
53
+ self . as_ident ( ) . as_cleaned_kubernetes_ident ( )
54
+ }
55
+
56
+ fn as_parameter_ident ( & self ) -> IdentString {
57
+ self . as_ident ( ) . as_parameter_ident ( )
58
+ }
59
+ }
60
+
40
61
pub trait ItemIdentExt : Deref < Target = IdentString > + From < Ident > + Spanned {
41
62
const DEPRECATED_PREFIX : & ' static str ;
42
63
@@ -115,3 +136,17 @@ impl ToTokens for VariantIdent {
115
136
self . 0 . to_tokens ( tokens) ;
116
137
}
117
138
}
139
+
140
+ pub fn path_to_string ( path : & Path ) -> String {
141
+ let pretty_path = path
142
+ . segments
143
+ . iter ( )
144
+ . map ( |s| s. ident . to_string ( ) )
145
+ . collect :: < Vec < String > > ( )
146
+ . join ( "::" ) ;
147
+
148
+ match path. leading_colon {
149
+ Some ( _) => format ! ( "::{}" , pretty_path) ,
150
+ None => pretty_path,
151
+ }
152
+ }
0 commit comments