1717package com .lightbend .paradox .dependencies
1818
1919import com .lightbend .paradox .markdown .LeafBlockDirective
20- import net .virtualvoid .sbt .graph .{ModuleTree , ModuleTreeNode }
20+ import net .virtualvoid .sbt .graph .{Module , ModuleGraph }
2121import org .pegdown .Printer
2222import org .pegdown .ast .{DirectiveNode , Visitor }
2323
24- class DependenciesDirective (showLicenses : Boolean )(projectIdToDependencies : String => ModuleTree )
24+ class DependenciesDirective (showLicenses : Boolean )(projectIdToDependencies : String => ModuleGraph )
2525 extends LeafBlockDirective (" dependencies" ) {
2626 def render (node : DirectiveNode , visitor : Visitor , printer : Printer ): Unit = {
2727 val projectId = node.attributes.value(" projectId" )
28- val tree = projectIdToDependencies(projectId)
28+ val graph = projectIdToDependencies(projectId)
2929 printer.println()
3030 val classes = Seq (" dependencies" , node.attributes.classesString).filter(_.nonEmpty)
3131 printer.print(s """ <dl class=" ${classes.mkString(" " )}"> """ )
32- if (tree .roots.flatMap(_. children).nonEmpty) {
33- renderDirect(node, tree.roots , showLicenses, printer)
34- renderTree(node, tree.roots , printer)
32+ if (graph .roots.flatMap(m => children(graph, m) ).nonEmpty) {
33+ renderDirect(graph , showLicenses, printer)
34+ renderTree(graph , printer)
3535 } else {
3636 printer.print(" <dt>Direct dependencies</dt><dd>This module has no dependencies.</dd>" )
3737 }
3838 printer.print(" </dl>" )
3939 printer.println()
4040 }
4141
42- private def renderDirect (node : DirectiveNode , roots : Seq [ ModuleTreeNode ] , showLicenses : Boolean , p : Printer ): Unit = {
42+ private def renderDirect (graph : ModuleGraph , showLicenses : Boolean , p : Printer ): Unit = {
4343 p.print(" <dt>Direct dependencies</dt><dd><table>" )
4444 p.indent(2 ).println()
4545 p.print(" <thead><tr><th>Organization</th><th>Artifact</th><th>Version</th>" )
@@ -48,10 +48,10 @@ class DependenciesDirective(showLicenses: Boolean)(projectIdToDependencies: Stri
4848 p.print(" <tbody>" )
4949 p.indent(2 )
5050 for {
51- r <- roots
52- d <- r. children
51+ r <- graph. roots
52+ d <- children(graph, r)
5353 } {
54- val moduleId = d.node. id
54+ val moduleId = d.id
5555 val name = moduleId.name
5656 p.println()
5757 .print(" <tr><td>" )
@@ -64,7 +64,7 @@ class DependenciesDirective(showLicenses: Boolean)(projectIdToDependencies: Stri
6464 )
6565 .print(moduleId.version)
6666 .print(" </a></td>" )
67- if (showLicenses) d.node. license.foreach(l => p.print(" <td>" ).print(l).print(" </td>" ))
67+ if (showLicenses) d.license.foreach(l => p.print(" <td>" ).print(l).print(" </td>" ))
6868 p.print(" </tr>" )
6969 }
7070 p.indent(- 2 ).println()
@@ -73,20 +73,20 @@ class DependenciesDirective(showLicenses: Boolean)(projectIdToDependencies: Stri
7373 p.print(" </table></dd>" ).println()
7474 }
7575
76- private def renderTree (node : DirectiveNode , roots : Seq [ ModuleTreeNode ] , p : Printer ): Unit = {
76+ private def renderTree (graph : ModuleGraph , p : Printer ): Unit = {
7777 p.print(" <dt>Dependency tree</dt><dd><pre>" )
7878 for {
79- r <- roots
80- d <- r. children
79+ r <- graph. roots
80+ d <- children(graph, r)
8181 } {
82- renderTreeNode(p, d)
82+ renderTreeNode(p, graph, d)
8383 }
8484 p.print(" </pre></dd>" ).println()
8585 }
8686
87- private def renderTreeNode (p : Printer , n : ModuleTreeNode ): Unit =
88- if (n.node. evictedByVersion.isEmpty) {
89- val moduleId = n.node. id
87+ private def renderTreeNode (p : Printer , graph : ModuleGraph , n : Module ): Unit =
88+ if (n.evictedByVersion.isEmpty) {
89+ val moduleId = n.id
9090 val name = moduleId.name
9191 p.println()
9292 .print(moduleId.organisation)
@@ -97,12 +97,14 @@ class DependenciesDirective(showLicenses: Boolean)(projectIdToDependencies: Stri
9797 )
9898 .print(moduleId.version)
9999 .print(" </a>" )
100- n.node. license.foreach(l => p.print(" " ).print(l))
101- if (n. children.nonEmpty) {
100+ n.license.foreach(l => p.print(" " ).print(l))
101+ if (children(graph, n) .nonEmpty) {
102102 p.indent(4 )
103- n.children. foreach(renderTreeNode(p, _))
103+ children(graph, n). foreach(renderTreeNode(p, graph , _))
104104 p.indent(- 4 )
105105 }
106106 }
107107
108+ private def children (graph : ModuleGraph , module : Module ) = graph.dependencyMap(module.id)
109+
108110}
0 commit comments