4141import ch .njol .skript .lang .util .SimpleExpression ;
4242import ch .njol .util .Kleenean ;
4343
44- /**
45- * Sorts a list of texts/stirngs alphabetically
46- * @author xXAndrew28Xx
47- */
4844@ Name ("Alphabetical Sort" )
49- @ Description ("Sort a list alphabetically " )
45+ @ Description ("Sorts given strings in alphabetical order. " )
5046@ Examples ({"set {_list::*} to alphabetically sorted {_list::*" })
51- @ Since ("dev-18 " )
47+ @ Since ("2.2-dev18b " )
5248public class ExprAlphabetList extends SimpleExpression <String >{
49+
5350 static {
5451 Skript .registerExpression (ExprAlphabetList .class , String .class , ExpressionType .COMBINED , "alphabetically sorted %strings%" );
5552 }
56- private Expression <String > exprTexts ;
53+
54+ @ SuppressWarnings ("null" )
55+ private Expression <String > texts ;
56+
57+ @ SuppressWarnings ({"null" , "unchecked" })
5758 @ Override
58- public boolean isSingle () {
59- return false ;
59+ public boolean init (Expression <?>[] exprs , int matchedPattern , Kleenean isDelayed , ParseResult parseResult ) {
60+ texts = (Expression <String >) exprs [0 ];
61+ return true ;
6062 }
61-
63+
64+ @ Override
65+ @ Nullable
66+ protected String [] get (Event e ) {
67+ String [] sorted = texts .getAll (e ).clone (); // Not yet sorted
68+ Arrays .sort (sorted ); // Now sorted
69+ return sorted ;
70+ }
71+
6272 @ Override
6373 public Class <? extends String > getReturnType () {
6474 return String .class ;
6575 }
66-
67- @ SuppressWarnings ("unchecked" )
76+
6877 @ Override
69- public boolean init (Expression <?>[] exprs , int matchedPattern , Kleenean isDelayed , ParseResult parseResult ) {
70- exprTexts = (Expression <String >) exprs [0 ];
71- return true ;
78+ public boolean isSingle () {
79+ return false ;
7280 }
7381
7482 @ Override
7583 public String toString (@ Nullable Event e , boolean debug ) {
76- return "alphabetically sorted %strings%" ;
77- }
78-
79- @ Override
80- @ Nullable
81- protected String [] get (Event e ) {
82- String [] texts = exprTexts .getArray (e );
83- ArrayList <String > alTexts = new ArrayList <String >(Arrays .asList (texts ));
84- Collections .sort (alTexts , new Comparator <String >(){
85-
86- @ Override
87- public int compare (String o1 , String o2 ) {
88- return o1 .compareTo (o2 );
89- }});
90- return alTexts .toArray (new String [alTexts .size ()]);
84+ return "alphabetically sorted strings" ;
9185 }
9286
9387}
0 commit comments