mirror of https://github.com/sbt/sbt.git
dependencyDot: fix rendering of HTML labels, fixes #84
This commit is contained in:
parent
cc2c3d1d9e
commit
00d64878aa
|
|
@ -134,12 +134,13 @@ object DependencyGraphSettings {
|
|||
}
|
||||
def dependencyDotStringTask =
|
||||
(moduleGraph, dependencyDotHeader, dependencyDotNodeLabel).map {
|
||||
(graph, dotHead, nodeLabel) ⇒ rendering.DOT.dotGraph(graph, dotHead, nodeLabel)
|
||||
(graph, dotHead, nodeLabel) ⇒ rendering.DOT.dotGraph(graph, dotHead, nodeLabel, rendering.DOT.AngleBrackets)
|
||||
}
|
||||
|
||||
def browseGraphHTMLTask =
|
||||
(dependencyDotString, dependencyBrowseGraphTarget, streams).map { (graph, target, streams) ⇒
|
||||
val link = DagreHTML.createLink(graph, target)
|
||||
(moduleGraph, dependencyDotHeader, dependencyDotNodeLabel, dependencyBrowseGraphTarget, streams).map { (graph, dotHead, nodeLabel, target, streams) ⇒
|
||||
val dotGraph = rendering.DOT.dotGraph(graph, dotHead, nodeLabel, rendering.DOT.LabelTypeHtml)
|
||||
val link = DagreHTML.createLink(dotGraph, target)
|
||||
streams.log.info(s"HTML graph written to $link")
|
||||
link
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,12 +22,14 @@ object DOT {
|
|||
|
||||
def dotGraph(graph: ModuleGraph,
|
||||
dotHead: String,
|
||||
nodeFormation: (String, String, String) ⇒ String): String = {
|
||||
nodeFormation: (String, String, String) ⇒ String,
|
||||
labelRendering: HTMLLabelRendering): String = {
|
||||
val nodes = {
|
||||
for (n ← graph.nodes) yield {
|
||||
val style = if (n.isEvicted) EvictedStyle else ""
|
||||
""" "%s"[labelType="html" label="%s" style="%s"]""".format(n.id.idString,
|
||||
nodeFormation(n.id.organisation, n.id.name, n.id.version),
|
||||
val label = nodeFormation(n.id.organisation, n.id.name, n.id.version)
|
||||
""" "%s"[%s style="%s"]""".format(n.id.idString,
|
||||
labelRendering.renderLabel(label),
|
||||
style)
|
||||
}
|
||||
}.mkString("\n")
|
||||
|
|
@ -60,4 +62,22 @@ object DOT {
|
|||
|
||||
"%s\n%s\n%s\n}".format(dotHead, nodes, edges)
|
||||
}
|
||||
|
||||
sealed trait HTMLLabelRendering {
|
||||
def renderLabel(labelText: String): String
|
||||
}
|
||||
/**
|
||||
* Render HTML labels in Angle brackets as defined at http://graphviz.org/content/node-shapes#html
|
||||
*/
|
||||
case object AngleBrackets extends HTMLLabelRendering {
|
||||
def renderLabel(labelText: String): String = s"label=<$labelText>"
|
||||
}
|
||||
|
||||
/**
|
||||
* Render HTML labels with `labelType="html"` and label content in double quotes as supported by
|
||||
* dagre-d3
|
||||
*/
|
||||
case object LabelTypeHtml extends HTMLLabelRendering {
|
||||
def renderLabel(labelText: String): String = s"""labelType="html" label="$labelText""""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,10 +34,10 @@ object Build extends sbt.Build {
|
|||
| edge [
|
||||
| arrowtail="none"
|
||||
| ]
|
||||
| "test-dot-file-generation:test-dot-file-generation_2.9.2:0.1-SNAPSHOT"[labelType="html" label="test-dot-file-generation<BR/><B>test-dot-file-generation_2.9.2</B><BR/>0.1-SNAPSHOT" style=""]
|
||||
| "just-a-transitive-dependency:just-a-transitive-dependency_2.9.2:0.1-SNAPSHOT"[labelType="html" label="just-a-transitive-dependency<BR/><B>just-a-transitive-dependency_2.9.2</B><BR/>0.1-SNAPSHOT" style=""]
|
||||
| "just-a-transitive-dependency-endpoint:just-a-transitive-dependency-endpoint_2.9.2:0.1-SNAPSHOT"[labelType="html" label="just-a-transitive-dependency-endpoint<BR/><B>just-a-transitive-dependency-endpoint_2.9.2</B><BR/>0.1-SNAPSHOT" style=""]
|
||||
| "just-a-dependency:just-a-dependency_2.9.2:0.1-SNAPSHOT"[labelType="html" label="just-a-dependency<BR/><B>just-a-dependency_2.9.2</B><BR/>0.1-SNAPSHOT" style=""]
|
||||
| "test-dot-file-generation:test-dot-file-generation_2.9.2:0.1-SNAPSHOT"[label=<test-dot-file-generation<BR/><B>test-dot-file-generation_2.9.2</B><BR/>0.1-SNAPSHOT> style=""]
|
||||
| "just-a-transitive-dependency:just-a-transitive-dependency_2.9.2:0.1-SNAPSHOT"[label=<just-a-transitive-dependency<BR/><B>just-a-transitive-dependency_2.9.2</B><BR/>0.1-SNAPSHOT> style=""]
|
||||
| "just-a-transitive-dependency-endpoint:just-a-transitive-dependency-endpoint_2.9.2:0.1-SNAPSHOT"[label=<just-a-transitive-dependency-endpoint<BR/><B>just-a-transitive-dependency-endpoint_2.9.2</B><BR/>0.1-SNAPSHOT> style=""]
|
||||
| "just-a-dependency:just-a-dependency_2.9.2:0.1-SNAPSHOT"[label=<just-a-dependency<BR/><B>just-a-dependency_2.9.2</B><BR/>0.1-SNAPSHOT> style=""]
|
||||
| "test-dot-file-generation:test-dot-file-generation_2.9.2:0.1-SNAPSHOT" -> "just-a-transitive-dependency:just-a-transitive-dependency_2.9.2:0.1-SNAPSHOT"
|
||||
| "just-a-transitive-dependency:just-a-transitive-dependency_2.9.2:0.1-SNAPSHOT" -> "just-a-transitive-dependency-endpoint:just-a-transitive-dependency-endpoint_2.9.2:0.1-SNAPSHOT"
|
||||
| "test-dot-file-generation:test-dot-file-generation_2.9.2:0.1-SNAPSHOT" -> "just-a-dependency:just-a-dependency_2.9.2:0.1-SNAPSHOT"
|
||||
|
|
|
|||
Loading…
Reference in New Issue