@@ -16,6 +16,7 @@ import std.array;
16
16
import std.digest.md ;
17
17
import std.format : formattedWrite;
18
18
import std.string : startsWith, toLower;
19
+ import std.traits : EnumMembers;
19
20
import std.variant ;
20
21
import vibe.core.log ;
21
22
import vibe.core.file ;
@@ -25,6 +26,7 @@ import vibe.inet.path;
25
26
import vibe.http.server;
26
27
import vibe.stream.wrapper : StreamOutputRange;
27
28
import diet.html;
29
+ import diet.traits : dietTraits;
28
30
29
31
30
32
/*
@@ -232,11 +234,17 @@ class DocPageInfo {
232
234
}
233
235
}
234
236
237
+ @dietTraits
238
+ struct DdoxDietTraits (HTMLOutputStyle htmlStyle) {
239
+ // fields and functions must be static atm., see https://github.com/rejectedsoftware/diet-ng/issues/33
240
+ enum HTMLOutputStyle htmlOutputStyle = htmlStyle;
241
+ }
242
+
235
243
void generateSitemap (OutputStream dst, Package root_package, GeneratorSettings settings, string delegate (in Entity) link_to, HTTPServerRequest req = null )
236
244
{
237
245
dst.write(" <?xml version=\" 1.0\" encoding=\" UTF-8\" ?>\n " );
238
246
dst.write(" <urlset xmlns=\" http://www.sitemaps.org/schemas/sitemap/0.9\" >\n " );
239
-
247
+
240
248
void writeEntry (string [] parts... ){
241
249
dst.write(" <url><loc>" );
242
250
foreach ( p; parts )
@@ -305,7 +313,15 @@ void generateApiIndex(OutputStream dst, Package root_package, GeneratorSettings
305
313
info.node = root_package;
306
314
307
315
auto rng = StreamOutputRange(dst);
308
- rng.compileHTMLDietFile! (" ddox.overview.dt" , req, info);
316
+ final switch (settings.htmlOutputStyle)
317
+ {
318
+ foreach (htmlOutputStyle; EnumMembers! HTMLOutputStyle)
319
+ case htmlOutputStyle:
320
+ {
321
+ rng.compileHTMLDietFile! (" ddox.overview.dt" , req, info, DdoxDietTraits! (htmlOutputStyle));
322
+ return ;
323
+ }
324
+ }
309
325
}
310
326
311
327
void generateModulePage (OutputStream dst, Package root_package, Module mod, GeneratorSettings settings, string delegate (in Entity) link_to, HTTPServerRequest req = null )
@@ -319,7 +335,15 @@ void generateModulePage(OutputStream dst, Package root_package, Module mod, Gene
319
335
info.docGroups = null ;
320
336
321
337
auto rng = StreamOutputRange(dst);
322
- rng.compileHTMLDietFile! (" ddox.module.dt" , req, info);
338
+ final switch (settings.htmlOutputStyle)
339
+ {
340
+ foreach (htmlOutputStyle; EnumMembers! HTMLOutputStyle)
341
+ case htmlOutputStyle:
342
+ {
343
+ rng.compileHTMLDietFile! (" ddox.module.dt" , req, info, DdoxDietTraits! (htmlOutputStyle));
344
+ return ;
345
+ }
346
+ }
323
347
}
324
348
325
349
void generateDeclPage (OutputStream dst, Package root_package, Module mod, string nested_name, DocGroup[] docgroups, GeneratorSettings settings, string delegate (in Entity) link_to, HTTPServerRequest req = null )
@@ -337,7 +361,15 @@ void generateDeclPage(OutputStream dst, Package root_package, Module mod, string
337
361
info.nestedName = nested_name;
338
362
339
363
auto rng = StreamOutputRange(dst);
340
- rng.compileHTMLDietFile! (" ddox.docpage.dt" , req, info);
364
+ final switch (settings.htmlOutputStyle)
365
+ {
366
+ foreach (htmlOutputStyle; EnumMembers! HTMLOutputStyle)
367
+ case htmlOutputStyle:
368
+ {
369
+ rng.compileHTMLDietFile! (" ddox.docpage.dt" , req, info, DdoxDietTraits! (htmlOutputStyle));
370
+ return ;
371
+ }
372
+ }
341
373
}
342
374
343
375
private bool cmpKind (in Entity a, in Entity b)
0 commit comments