2014-03-19 10 views
9

Für einen In-Application-Hilfe-Browser möchte ich API-Dokumente rendern. Leider scheint Scaladoc nur HTML-Dateien voller schrecklicher JavaScript-Dateien zu produzieren, so dass es unmöglich ist, diese Dateien selbst mit ziemlich schweren Komponenten wie SwingBox zu rendern (was hat aber sehr gute CSS haben).Generieren Sie Scala-API-Dokumente ohne JavaScript, aber statischen HTML- oder Markdown-Code

Also meine Frage ist: Kann ich das Scaladoc-Tool oder seine API (wenn es welche gibt) nutzen, um eine Zwischenrepräsentation zu erstellen, die ich dann zB in benutzerdefinierte Markdown-Dateien oder statische HTML-Seiten schreiben kann?

Antwort

9

Was Sie suchen, ist eine benutzerdefinierte Doclet Implementierung, die über die -doc-generator Befehlszeilenoption zu scaladoc verwendet werden kann. Ich kann nicht beantworten, ob eine bereits vorhandene Implementierung von Doclet Ihre Anforderungen erfüllt oder nicht, aber eine vielversprechende Implementierung, die es zu erkunden gilt, ist Extradoc. Es wurde jedoch seit einiger Zeit nicht mehr aktualisiert.

Auf einer niedrigeren Ebene können Sie Ihre eigenen durch Unterklasse Doclet und zugehörige APIs implementieren (z. B. HTMLFactory und Template). Es gibt anscheinend keine/viele Beispiele dafür, wie dies über Extradoc 1 hinaus zu tun ist. Leider sieht es so aus, als hätte ScalaDoc in diesem Bereich nicht die gleiche Aufmerksamkeit wie JavaDoc bekommen. Per these release notes, 2.12 hat eine verbesserte ScalaDoc-Schnittstelle, aber ich denke nicht, dass es die Abhängigkeit von JavaScript ändert.

Ich stieß auch auf Nyandoc, die ScalaDoc und JavaDoc zu Markdown konvertiert. Vielleicht könnte es Sie als unmittelbares Format näher an Ihr Ziel bringen.

Alles, was gesagt wird, ist die Verwendung der JavaFX WebView Komponente eine Option? Es hat einen vollwertigen WebKit-Browser und eine JS-Engine dahinter, und es ist möglich, embed JavaFX components in Swing.

+0

Danke, das ist eine Reihe nützlicher Links. Ich wusste nicht, Doclet oder Nyandoc und werde sehen, ob sie verwendet werden können. Im Moment möchte ich Java 8/JavaFX/WebView nicht benötigen, auch weil ich den Markdown auf verschiedene Arten einstellen möchte. –

+1

Verständlich auf Java 8 und dem Wunsch, die Ausgabe abzustimmen. Beachten Sie, dass JavaFX 2 auf Java 7 läuft und auch WebView. – metasim

+0

Ich verstehe. Das Legacy-System, das ich noch zu befriedigen versuche, sind einige alte OS X 10.6 Schneeleopard-Boxen, die nichts neueres als Java 6 ausführen können. (Auch unter Linux müsste ich überprüfen, ob OpenJFX 2 auf OpenJDK 7 läuft) –