File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed 
core/src/main/java/fr/traqueur/commands/impl/arguments Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ package  fr .traqueur .commands .impl .arguments ;
2+ 
3+ import  fr .traqueur .commands .api .arguments .ArgumentConverter ;
4+ import  fr .traqueur .commands .api .arguments .TabCompleter ;
5+ 
6+ import  java .util .Arrays ;
7+ import  java .util .List ;
8+ import  java .util .stream .Collectors ;
9+ 
10+ public  class  EnumArgument <T  extends  Enum <T >, S > implements  ArgumentConverter <Enum <T >>, TabCompleter <S > {
11+ 
12+     public  static  <E  extends  Enum <E >, S > EnumArgument <E , S > of (Class <E > enumClass ) {
13+         return  new  EnumArgument <>(enumClass );
14+     }
15+ 
16+     private  final  Class <T > clazz ;
17+ 
18+     public  EnumArgument (Class <T > clazz ) {
19+         this .clazz  = clazz ;
20+     }
21+ 
22+     @ Override 
23+     public  Enum <T > apply (String  s ) {
24+         try  {
25+             return  Enum .valueOf (clazz , s );
26+         } catch  (IllegalArgumentException  e ) {
27+             return  null ;
28+         }
29+     }
30+ 
31+     @ Override 
32+     public  List <String > onCompletion (S  sender , List <String > args ) {
33+         return  Arrays .stream (clazz .getEnumConstants ())
34+                 .map (Enum ::name )
35+                 .collect (Collectors .toList ());
36+     }
37+ }
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments