Skip to content

Commit f934e18

Browse files
committed
The docs are working... But still need nav bar etc.
1 parent 9104a47 commit f934e18

File tree

9 files changed

+107
-33
lines changed

9 files changed

+107
-33
lines changed

docs/classes.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<h1>Types</h1>
2+
3+
${generate classes desc_full.html}

docs/conditions.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<h1>Conditions</h1>
2+
3+
${generate conditions desc_full.html}

docs/effects.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<h1>Effects</h1>
2+
3+
${generate effects desc_full.html}

docs/events.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<h1>Triggers</h1>
2+
3+
${generate events desc_full.html}
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66

77
<tr>
88
<td class="item-table-label">Pattern:</td>
9-
<ul>
10-
${generate element.patterns pattern_element.html}
11-
</ul>
9+
<td>
10+
<ul>
11+
${generate element.patterns pattern_element.html}
12+
</ul>
13+
</td>
1214
</tr>
1315

1416
<tr>

src/main/java/ch/njol/skript/SkriptCommand.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ public class SkriptCommand implements CommandExecutor {
8585
.add("stop")
8686
).add("help");
8787

88+
static {
89+
if (new File(Skript.getInstance().getDataFolder() + "/doc-templates").exists()) {
90+
skriptCommandHelp.add("gen-docs");
91+
}
92+
}
93+
8894
private final static ArgsMessage m_reloading = new ArgsMessage(NODE + ".reload.reloading");
8995

9096
private final static void reloading(final CommandSender sender, String what, final Object... args) {
@@ -340,7 +346,7 @@ public boolean onCommand(final @Nullable CommandSender sender, final @Nullable C
340346
Skript.adminBroadcast(Language.get("timings.stop message"));
341347
}
342348
} else if (args[0].equalsIgnoreCase("gen-docs")) {
343-
File templateDir = new File(Skript.getInstance().getDataFolder() + "/doc-templates");
349+
File templateDir = new File(Skript.getInstance().getDataFolder() + "/doc-templates/");
344350
if (!templateDir.exists()) {
345351
Skript.info(sender, "Documentation templates not found. Cannot generate docs!");
346352
return true;

src/main/java/ch/njol/skript/doc/HTMLGenerator.java

Lines changed: 83 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,19 @@ public HTMLGenerator(File templateDir, File outputDir) {
6262
}
6363

6464
public void generate() {
65-
for (File f : template.listFiles()) {
66-
if (f.getName() == "template.html" || !f.getName().endsWith(".html") || f.isDirectory())
67-
continue; // Ignore skeleton, README and directories
65+
for (File f : template.listFiles()) {
66+
if (f.getName().equals("css")) { // Copy CSS files
67+
File cssTo = new File(output + "/css");
68+
cssTo.mkdirs();
69+
for (File css : new File(template + "/css").listFiles()) {
70+
writeFile(new File(cssTo + "/" + css.getName()), readFile(css));
71+
}
72+
continue;
73+
} else if (f.isDirectory()) // Ignore other directories
74+
continue;
75+
if (f.getName().endsWith("template.html") || !f.getName().endsWith(".html"))
76+
continue; // Ignore skeleton and README
77+
Skript.info("Creating documentation for " + f.getName());
6878

6979
String content = readFile(f);
7080
String page = skeleton.replace("${content}", content); // Content to inside skeleton
@@ -82,7 +92,7 @@ public void generate() {
8292
}
8393

8494
for (String name : replace) {
85-
String temp = readFile(new File(template + "/template/" + name));
95+
String temp = readFile(new File(template + "/templates/" + name));
8696
page = page.replace("${include " + name + "}", temp);
8797
}
8898

@@ -92,39 +102,47 @@ public void generate() {
92102
String[] genParams = page.substring(generate + 11, nextBracket).split(" ");
93103
String generated = "";
94104

95-
String descTemp = readFile(new File(template + "/template/" + genParams[1]));
105+
String descTemp = readFile(new File(template + "/templates/" + genParams[1]));
96106
String genType = genParams[0];
97-
if (genType == "expressions") {
107+
if (genType.equals("expressions")) {
98108
Iterator<ExpressionInfo<?,?>> it = Skript.getExpressions();
99109
while (it.hasNext()) {
100110
ExpressionInfo<?,?> info = it.next();
101111
assert info != null;
112+
if (info.c.getAnnotation(NoDoc.class) != null)
113+
continue;
102114
String desc = generateAnnotated(descTemp, info);
103115
generated += desc;
104116
}
105-
} else if (genType == "effects") {
117+
} else if (genType.equals("effects")) {
106118
for (SyntaxElementInfo<? extends Effect> info : Skript.getEffects()) {
107119
assert info != null;
120+
if (info.c.getAnnotation(NoDoc.class) != null)
121+
continue;
108122
generated += generateAnnotated(descTemp, info);
109123
}
110-
} else if (genType == "conditions") {
124+
} else if (genType.equals("conditions")) {
111125
for (SyntaxElementInfo<? extends Condition> info : Skript.getConditions()) {
112126
assert info != null;
127+
if (info.c.getAnnotation(NoDoc.class) != null)
128+
continue;
113129
generated += generateAnnotated(descTemp, info);
114130
}
115-
} else if (genType == "events") {
131+
} else if (genType.equals("events")) {
116132
for (SkriptEventInfo<?> info : Skript.getEvents()) {
117133
assert info != null;
134+
if (info.c.getAnnotation(NoDoc.class) != null)
135+
continue;
118136
generated += generateEvent(descTemp, info);
119137
}
120-
} else if (genType == "classes") {
138+
} else if (genType.equals("classes")) {
121139
for (ClassInfo<?> info : Classes.getClassInfos()) {
122140
assert info != null;
123141
generated += generateClass(descTemp, info);
124142
}
125143
}
126144

127-
page = page.replace(page.substring(generate, nextBracket), generated);
145+
page = page.replace(page.substring(generate, nextBracket + 1), generated);
128146

129147
generate = page.indexOf("${generate", nextBracket);
130148
}
@@ -141,42 +159,68 @@ public void generate() {
141159
* @return Generated HTML entry.
142160
*/
143161
String generateAnnotated(String descTemp, SyntaxElementInfo<?> info) {
144-
String desc = descTemp.replace("${element.name}", info.c.getAnnotation(Name.class).value());
145-
desc = desc.replace("${element.since}", info.c.getAnnotation(Since.class).value());
146-
desc = desc.replace("${element.desc}", Joiner.on("\n").join(info.c.getAnnotation(Description.class).value()));
147-
desc = desc.replace("${element.examples}", Joiner.on("\n").join(info.c.getAnnotation(Examples.class).value()));
162+
Class<?> c = info.c;
163+
String desc = "";
164+
165+
Name name = c.getAnnotation(Name.class);
166+
if (name != null)
167+
desc = descTemp.replace("${element.name}", name.value());
168+
Since since = c.getAnnotation(Since.class);
169+
if (since != null)
170+
desc = desc.replace("${element.since}", since.value());
171+
Description description = c.getAnnotation(Description.class);
172+
if (description != null)
173+
desc = desc.replace("${element.desc}", Joiner.on("\n").join(description.value()));
174+
Examples examples = c.getAnnotation(Examples.class);
175+
if (examples != null)
176+
desc = desc.replace("${element.examples}", Joiner.on("\n<br>").join(examples.value()));
148177

149178
List<String> toGen = Lists.newArrayList();
150179
int generate = desc.indexOf("${generate");
151180
while (generate != -1) {
181+
//Skript.info("Found generate!");
152182
int nextBracket = desc.indexOf("}", generate);
153183
String data = desc.substring(generate + 11, nextBracket);
154184
toGen.add(data);
185+
//Skript.info("Added " + data);
155186

156187
generate = desc.indexOf("${generate", nextBracket);
157188
}
158189

159190
// Assume element.pattern generate; TODO
160191
for (String data : toGen) {
161192
String[] split = data.split(" ");
162-
String pattern = readFile(new File(template + "/template/" + split[1]));
193+
String pattern = readFile(new File(template + "/templates/" + split[1]));
194+
//Skript.info("Pattern is " + pattern);
163195
String patterns = "";
164196
for (String line : info.patterns) {
165197
String parsed = pattern.replace("${element.pattern}", line);
198+
//Skript.info("parsed is " + parsed);
166199
patterns += parsed;
167200
}
168201

169-
desc.replace("${generate element.patterns " + split[1] + "}", patterns);
202+
String toReplace = "${generate element.patterns " + split[1] + "}";
203+
//Skript.info("toReplace " + toReplace);
204+
desc = desc.replace(toReplace, patterns);
170205
}
171206

172207
return desc;
173208
}
174209

175210
String generateEvent(String descTemp, SkriptEventInfo<?> info) {
176-
String desc = descTemp.replace("${element.name}", info.getName());
177-
desc = desc.replace("${element.since}", info.getSince());
178-
desc = desc.replace("${element.desc}", Joiner.on("\n").join(info.getDescription()));
179-
desc = desc.replace("${element.examples}", Joiner.on("\n").join(info.getExamples()));
211+
String desc = "";
212+
213+
String docName = info.getName();
214+
desc = descTemp.replace("${element.name}", docName);
215+
String since = info.getSince();
216+
if (since != null)
217+
desc = desc.replace("${element.since}", since);
218+
String[] description = info.getDescription();
219+
if (description != null)
220+
desc = desc.replace("${element.desc}", Joiner.on("\n").join(description));
221+
String[] examples = info.getExamples();
222+
if (examples != null)
223+
desc = desc.replace("${element.examples}", Joiner.on("\n<br>").join(examples));
180224

181225
List<String> toGen = Lists.newArrayList();
182226
int generate = desc.indexOf("${generate");
@@ -191,24 +235,34 @@ String generateEvent(String descTemp, SkriptEventInfo<?> info) {
191235
// Assume element.pattern generate; TODO
192236
for (String data : toGen) {
193237
String[] split = data.split(" ");
194-
String pattern = readFile(new File(template + "/template/" + split[1]));
238+
String pattern = readFile(new File(template + "/templates/" + split[1]));
195239
String patterns = "";
196240
for (String line : info.patterns) {
197241
String parsed = pattern.replace("${element.pattern}", line);
198242
patterns += parsed;
199243
}
200244

201-
desc.replace("${generate element.patterns " + split[1] + "}", patterns);
245+
desc = desc.replace("${generate element.patterns " + split[1] + "}", patterns);
202246
}
203247

204248
return desc;
205249
}
206250

207251
String generateClass(String descTemp, ClassInfo<?> info) {
208-
String desc = descTemp.replace("${element.name}", info.getDocName());
209-
desc = desc.replace("${element.since}", info.getSince());
210-
desc = desc.replace("${element.desc}", Joiner.on("\n").join(info.getDescription()));
211-
desc = desc.replace("${element.examples}", Joiner.on("\n").join(info.getExamples()));
252+
String desc = "";
253+
254+
String docName = info.getDocName();
255+
if (docName != null)
256+
desc = descTemp.replace("${element.name}", docName);
257+
String since = info.getSince();
258+
if (since != null)
259+
desc = desc.replace("${element.since}", since);
260+
String[] description = info.getDescription();
261+
if (description != null)
262+
desc = desc.replace("${element.desc}", Joiner.on("\n").join(description));
263+
String[] examples = info.getExamples();
264+
if (examples != null)
265+
desc = desc.replace("${element.examples}", Joiner.on("\n<br>").join(examples));
212266

213267
List<String> toGen = Lists.newArrayList();
214268
int generate = desc.indexOf("${generate");
@@ -223,7 +277,7 @@ String generateClass(String descTemp, ClassInfo<?> info) {
223277
// Assume element.pattern generate; TODO
224278
for (String data : toGen) {
225279
String[] split = data.split(" ");
226-
String pattern = readFile(new File(template + "/template/" + split[1]));
280+
String pattern = readFile(new File(template + "/templates/" + split[1]));
227281
String patterns = "";
228282
String[] lines = info.getUsage();
229283
if (lines == null)
@@ -233,7 +287,7 @@ String generateClass(String descTemp, ClassInfo<?> info) {
233287
patterns += parsed;
234288
}
235289

236-
desc.replace("${generate element.patterns " + split[1] + "}", patterns);
290+
desc = desc.replace("${generate element.patterns " + split[1] + "}", patterns);
237291
}
238292

239293
return desc;

0 commit comments

Comments
 (0)