36
36
import com .google .common .collect .Lists ;
37
37
import com .google .common .io .Files ;
38
38
import org .apache .commons .lang .StringUtils ;
39
- import org .apache .commons .lang .WordUtils ;
40
39
import org .eclipse .jdt .annotation .Nullable ;
40
+ import org .skriptlang .skript .lang .entry .EntryData ;
41
+ import org .skriptlang .skript .lang .entry .EntryValidator ;
42
+ import org .skriptlang .skript .lang .structure .StructureInfo ;
41
43
42
44
import java .io .File ;
43
45
import java .io .IOException ;
50
52
import java .util .List ;
51
53
import java .util .Locale ;
52
54
import java .util .regex .Pattern ;
55
+ import java .util .stream .Collectors ;
53
56
54
57
/**
55
58
* Template engine, primarily used for generating Skript documentation
@@ -274,6 +277,21 @@ else if (!filesInside.getName().matches("(?i)(.*)\\.(html?|js|css|json)")) {
274
277
String genType = genParams [0 ];
275
278
boolean isDocsPage = genType .equals ("docs" );
276
279
280
+ if (genType .equals ("structures" ) || isDocsPage ) {
281
+
282
+ for (Iterator <StructureInfo <?>> it = sortedAnnotatedIterator (
283
+ (Iterator ) Skript .getStructures ().stream ().filter (structure -> structure .getClass () == StructureInfo .class ).iterator ());
284
+ it .hasNext (); ) {
285
+
286
+ StructureInfo <?> info = it .next ();
287
+ assert info != null ;
288
+ if (info .c .getAnnotation (NoDoc .class ) != null )
289
+ continue ;
290
+ String desc = generateAnnotated (descTemp , info , generated .toString (), "Structure" );
291
+ generated .append (desc );
292
+ }
293
+ }
294
+
277
295
if (genType .equals ("expressions" ) || isDocsPage ) {
278
296
for (Iterator <ExpressionInfo <?,?>> it = sortedAnnotatedIterator ((Iterator ) Skript .getExpressions ()); it .hasNext (); ) {
279
297
ExpressionInfo <?,?> info = it .next ();
@@ -496,6 +514,25 @@ private String generateAnnotated(String descTemp, SyntaxElementInfo<?> info, @Nu
496
514
// New Elements
497
515
desc = handleIf (desc , "${if new-element}" , NEW_TAG_PATTERN .matcher ((since != null ? since .value () : "" )).find ());
498
516
517
+ // Structure - EntryData
518
+ if (info instanceof StructureInfo ) {
519
+ EntryValidator entryValidator = ((StructureInfo <?>) info ).entryValidator ;
520
+ List <EntryData <?>> entryDataList = new ArrayList <>();
521
+ if (entryValidator != null )
522
+ entryDataList .addAll (entryValidator .getEntryData ());
523
+
524
+ // TODO add type of entrydata like boolean/string/section etc.
525
+ desc = handleIf (desc , "${if structure-optional-entrydata}" , entryValidator != null );
526
+ desc = desc .replace ("${element.structure-optional-entrydata}" , entryValidator == null ? "" : Joiner .on (", " ).join (entryDataList .stream ().filter (EntryData ::isOptional ).map (EntryData ::getKey ).collect (Collectors .toList ())));
527
+
528
+ desc = handleIf (desc , "${if structure-required-entrydata}" , entryValidator != null );
529
+ desc = desc .replace ("${element.structure-required-entrydata}" , entryValidator == null ? "" : Joiner .on (", " ).join (entryDataList .stream ().filter (entryData -> !entryData .isOptional ()).map (EntryData ::getKey ).collect (Collectors .toList ())));
530
+ } else {
531
+ desc = handleIf (desc , "${if structure-optional-entrydata}" , false );
532
+ desc = handleIf (desc , "${if structure-required-entrydata}" , false );
533
+
534
+ }
535
+
499
536
// Type
500
537
desc = desc .replace ("${element.type}" , type );
501
538
@@ -604,6 +641,9 @@ private String generateEvent(String descTemp, SkriptEventInfo<?> info, @Nullable
604
641
// Return Type
605
642
desc = handleIf (desc , "${if return-type}" , false );
606
643
644
+ desc = handleIf (desc , "${if structure-optional-entrydata}" , false );
645
+ desc = handleIf (desc , "${if structure-required-entrydata}" , false );
646
+
607
647
// Generate Templates
608
648
List <String > toGen = Lists .newArrayList ();
609
649
int generate = desc .indexOf ("${generate" );
@@ -623,6 +663,7 @@ private String generateEvent(String descTemp, SkriptEventInfo<?> info, @Nullable
623
663
for (String line : getDefaultIfNullOrEmpty (info .patterns , "Missing patterns." )) {
624
664
assert line != null ;
625
665
line = cleanPatterns (line );
666
+ line = line .replace (SkriptEventInfo .EVENT_PRIORITY_SYNTAX , "" ); // replace priority syntax in event syntaxes
626
667
String parsed = pattern .replace ("${element.pattern}" , line );
627
668
patterns .append (parsed );
628
669
}
@@ -704,6 +745,9 @@ private String generateClass(String descTemp, ClassInfo<?> info, @Nullable Strin
704
745
// Return Type
705
746
desc = handleIf (desc , "${if return-type}" , false );
706
747
748
+ desc = handleIf (desc , "${if structure-optional-entrydata}" , false );
749
+ desc = handleIf (desc , "${if structure-required-entrydata}" , false );
750
+
707
751
// Generate Templates
708
752
List <String > toGen = Lists .newArrayList ();
709
753
int generate = desc .indexOf ("${generate" );
@@ -788,6 +832,9 @@ private String generateFunction(String descTemp, JavaFunction<?> info) {
788
832
// Type
789
833
desc = desc .replace ("${element.type}" , "Function" );
790
834
835
+ desc = handleIf (desc , "${if structure-optional-entrydata}" , false );
836
+ desc = handleIf (desc , "${if structure-required-entrydata}" , false );
837
+
791
838
// Generate Templates
792
839
List <String > toGen = Lists .newArrayList ();
793
840
int generate = desc .indexOf ("${generate" );
0 commit comments