blob: 61c1819d117a7399eed2fa72536f53f1a8892f50 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
/**
* @author Damien Obrist
* @author Vlad Ureche
*/
package scala.tools.nsc
package doc
package html
package page
package diagram
import scala.xml.NodeSeq
import scala.tools.nsc.doc.html.HtmlPage
import scala.tools.nsc.doc.model.diagram.Diagram
import scala.tools.nsc.doc.model.DocTemplateEntity
trait DiagramGenerator {
/**
* Generates a visualization of the internal representation
* of a diagram.
*
* @param d The model of the diagram
* @param p The page the diagram will be embedded in (needed for link generation)
* @return The HTML to be embedded in the Scaladoc page
*/
def generate(d: Diagram, t: DocTemplateEntity, p: HtmlPage):NodeSeq
}
object DiagramGenerator {
// TODO: This is tailored towards the dot generator, since it's the only generator. In the future it should be more
// general.
private[this] var dotRunner: DotRunner = null
private[this] var settings: doc.Settings = null
def initialize(s: doc.Settings) =
settings = s
def getDotRunner() = {
if (dotRunner == null)
dotRunner = new DotRunner(settings)
dotRunner
}
def cleanup() = {
DiagramStats.printStats(settings)
if (dotRunner != null) {
dotRunner.cleanup()
dotRunner = null
}
}
}
|