Skip to content

Commit ad8bec6

Browse files
authored
help util: replace jtextutils with asciitable (#415)
* main motivation: jtextutils became vulnerable because the domain `com.massisframework` is available for sale... * also: asciitable is better IMO
1 parent 7392bb8 commit ad8bec6

File tree

4 files changed

+42
-19
lines changed

4 files changed

+42
-19
lines changed

traversal-tests/src/test/scala/overflowdb/traversal/TraversalTests.scala

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import overflowdb.{Node, toPropertyKeyOps}
1010

1111
import scala.collection.mutable
1212
import overflowdb.traversal._
13+
import overflowdb.traversal.help.Table
1314

1415
import scala.jdk.CollectionConverters.IteratorHasAsScala
1516

@@ -199,7 +200,7 @@ class TraversalTests extends AnyWordSpec with ExampleGraphSetup {
199200
thingTraversalHelpVerbose should include(".label") // step from ElementTraversal
200201
thingTraversalHelpVerbose should include(".out") // step from NodeTraversal
201202
thingTraversalHelpVerbose should include(
202-
"just like name, but in a different package"
203+
"name2 (just like name"
203204
) // step from helptest.SimpleDomainTraversal
204205
}
205206

@@ -236,3 +237,17 @@ class TraversalTests extends AnyWordSpec with ExampleGraphSetup {
236237
}
237238

238239
}
240+
241+
object TableStyleTester {
242+
def main(args: Array[String]): Unit = {
243+
println(
244+
Table(
245+
Seq("column a", "column b"),
246+
Seq(
247+
Seq("abc 1", "bde 1"),
248+
Seq("abc 2", "bde 2")
249+
)
250+
).render()
251+
)
252+
}
253+
}

traversal/build.sbt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name := "overflowdb-traversal"
22

33
libraryDependencies ++= Seq(
4-
"net.oneandone.reflections8" % "reflections8" % "0.11.7", // go back to reflections once 0.9.13 is released
5-
"com.massisframework" % "j-text-utils" % "0.3.4"
4+
"net.oneandone.reflections8" % "reflections8" % "0.11.7",
5+
"de.vandermeer" % "asciitable" % "0.3.2",
66
)
Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,29 @@
11
package overflowdb.traversal.help
22

3-
import dnl.utils.text.table.TextTable
4-
import java.io.{ByteArrayOutputStream, PrintStream}
5-
import java.nio.charset.StandardCharsets
6-
import scala.util.Using
3+
import de.vandermeer.asciitable.AsciiTable
4+
import de.vandermeer.asciithemes.TA_GridThemes
5+
import de.vandermeer.skb.interfaces.transformers.textformat.TextAlignment
76

8-
case class Table(columnNames: Iterable[String], rows: Iterable[Iterable[String]]) {
7+
import scala.jdk.CollectionConverters.SeqHasAsJava
98

10-
lazy val render: String = {
11-
Using.Manager { use =>
12-
val charset = StandardCharsets.UTF_8
13-
val baos = use(new ByteArrayOutputStream)
14-
val ps = use(new PrintStream(baos, true, charset.name))
15-
val rowsAsArray = rows.map(_.map(_ + " ").toArray.asInstanceOf[Array[Object]]).toArray
16-
new TextTable(columnNames.toArray, rowsAsArray).printTable(ps, 0)
17-
new String(baos.toByteArray, charset)
18-
}.get
9+
case class Table(columnNames: Seq[String], rows: Seq[Seq[String]]) {
10+
11+
def render(width: Int = 120): String = {
12+
if (columnNames.isEmpty && rows.isEmpty) {
13+
""
14+
} else {
15+
val table = new AsciiTable()
16+
table.addRule()
17+
table.addRow(columnNames.asJava)
18+
table.addRule()
19+
if (rows.nonEmpty) {
20+
rows.map(_.asJava).foreach(table.addRow)
21+
}
22+
table.addRule()
23+
table.getContext.setGridTheme(TA_GridThemes.FULL)
24+
table.setTextAlignment(TextAlignment.LEFT)
25+
table.render(width)
26+
}
1927
}
2028

2129
}

traversal/src/main/scala/overflowdb/traversal/help/TraversalHelp.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class TraversalHelp(searchPackages: DocSearchPackages) {
5454
)
5555

5656
s"""Available steps for ${elementClass.getSimpleName}:
57-
|${table.render}
57+
|${table.render()}
5858
|""".stripMargin
5959
}
6060

@@ -73,7 +73,7 @@ class TraversalHelp(searchPackages: DocSearchPackages) {
7373
)
7474

7575
s"""Available starter steps:
76-
|${table.render}
76+
|${table.render()}
7777
|""".stripMargin
7878
}
7979

0 commit comments

Comments
 (0)