From 96210f21f4197c2b7b30fdfd5f60e3875c1f040b Mon Sep 17 00:00:00 2001 From: Frank Rosner Date: Mon, 4 Jan 2016 10:42:28 +0100 Subject: [PATCH 1/3] #1 replace all $ in class names before printing them --- .../scala/de/frosner/replhelper/Helper.scala | 6 +++-- .../DummyObjectThatIsNoCompanion.scala | 12 ++++++++++ .../de/frosner/replhelper/HelperTest.scala | 24 +++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 src/test/scala/de/frosner/replhelper/DummyObjectThatIsNoCompanion.scala diff --git a/src/main/scala/de/frosner/replhelper/Helper.scala b/src/main/scala/de/frosner/replhelper/Helper.scala index b96dd88..39c7b44 100644 --- a/src/main/scala/de/frosner/replhelper/Helper.scala +++ b/src/main/scala/de/frosner/replhelper/Helper.scala @@ -19,6 +19,8 @@ case class Helper[T](classWithHelp: Class[T]) { type ShortDescription = String type LongDescription = String + private val simpleClassName = classWithHelp.getSimpleName.replace("$", "") + private[replhelper] val methods = { val methodsThatOfferHelp = classWithHelp.getMethods.filter(method => method.getAnnotations.exists( annotation => annotation.isInstanceOf[Help] @@ -48,7 +50,7 @@ case class Helper[T](classWithHelp: Class[T]) { def printAllMethods(out: PrintStream) = out.println( methods.map { case (category, methods) => { - s"\033[1m${category}\033[0m [${classWithHelp.getSimpleName}]" + NEWLINE + methods.map { + s"\033[1m${category}\033[0m [$simpleClassName]" + NEWLINE + methods.map { case (name, help) => "- " + getMethodSignature(name, help) + s": ${help.shortDescription}" }.mkString(NEWLINE) } @@ -90,7 +92,7 @@ case class Helper[T](classWithHelp: Class[T]) { private def getLongDescriptionPrintable(methodWithHelp: (String, Help), out: PrintStream) = { val (name, help) = methodWithHelp - s"\033[1m${getMethodSignature(name, help)}\033[0m [${classWithHelp.getSimpleName}]" + NEWLINE + help.longDescription + s"\033[1m${getMethodSignature(name, help)}\033[0m [$simpleClassName]" + NEWLINE + help.longDescription } } diff --git a/src/test/scala/de/frosner/replhelper/DummyObjectThatIsNoCompanion.scala b/src/test/scala/de/frosner/replhelper/DummyObjectThatIsNoCompanion.scala new file mode 100644 index 0000000..fb0acb3 --- /dev/null +++ b/src/test/scala/de/frosner/replhelper/DummyObjectThatIsNoCompanion.scala @@ -0,0 +1,12 @@ +package de.frosner.replhelper + +object DummyObjectThatIsNoCompanion { + + @Help( + category = "c", + shortDescription = "s", + longDescription = "l" + ) + def method = ??? + +} diff --git a/src/test/scala/de/frosner/replhelper/HelperTest.scala b/src/test/scala/de/frosner/replhelper/HelperTest.scala index 696cecd..6f4c2c2 100644 --- a/src/test/scala/de/frosner/replhelper/HelperTest.scala +++ b/src/test/scala/de/frosner/replhelper/HelperTest.scala @@ -156,4 +156,28 @@ class HelperTest extends FlatSpec with Matchers { ) } + "Solitary objects" should "not contain $ in their name when long description is printed" in { + val result = new ByteArrayOutputStream() + val out = new PrintStream(result) + val helper = Helper(DummyObjectThatIsNoCompanion.getClass) + helper.printMethods("method", out) + result.toString.split(NEWLINE, -1) shouldBe Array( + s"\033[1mmethod()\033[0m [DummyObjectThatIsNoCompanion]", + "l", + "" + ) + } + + it should "not contain $ in their name when short description is printed" in { + val result = new ByteArrayOutputStream() + val out = new PrintStream(result) + val helper = Helper(DummyObjectThatIsNoCompanion.getClass) + helper.printAllMethods(out) + result.toString.split(NEWLINE, -1) shouldBe Array( + s"\033[1mc\033[0m [DummyObjectThatIsNoCompanion]", + "- method(): s", + "" + ) + } + } From 0e9793d5dc97ec6660da120e3effa793ff640f75 Mon Sep 17 00:00:00 2001 From: Frank Rosner Date: Mon, 4 Jan 2016 10:48:11 +0100 Subject: [PATCH 2/3] #1 remove unused import --- src/main/scala/de/frosner/replhelper/Helper.scala | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/scala/de/frosner/replhelper/Helper.scala b/src/main/scala/de/frosner/replhelper/Helper.scala index 39c7b44..ac40cd4 100644 --- a/src/main/scala/de/frosner/replhelper/Helper.scala +++ b/src/main/scala/de/frosner/replhelper/Helper.scala @@ -2,8 +2,6 @@ package de.frosner.replhelper import java.io._ -import scala.util.{Failure, Try} - /** * Utility class to provide interactive help for methods of a given class. It scans the class method definitions for * the ones that contain a [[Help]] annotation. Use it to print a list of methods with help available or to print From d4c8c52b950a1e85269318ef271764050cb1050a Mon Sep 17 00:00:00 2001 From: Frank Rosner Date: Mon, 4 Jan 2016 10:48:41 +0100 Subject: [PATCH 3/3] #1 replace explicit Console characters by variables --- .../scala/de/frosner/replhelper/Helper.scala | 6 +++--- .../de/frosner/replhelper/HelperTest.scala | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/scala/de/frosner/replhelper/Helper.scala b/src/main/scala/de/frosner/replhelper/Helper.scala index ac40cd4..ec0edef 100644 --- a/src/main/scala/de/frosner/replhelper/Helper.scala +++ b/src/main/scala/de/frosner/replhelper/Helper.scala @@ -1,6 +1,6 @@ package de.frosner.replhelper -import java.io._ +import java.io.PrintStream /** * Utility class to provide interactive help for methods of a given class. It scans the class method definitions for @@ -48,7 +48,7 @@ case class Helper[T](classWithHelp: Class[T]) { def printAllMethods(out: PrintStream) = out.println( methods.map { case (category, methods) => { - s"\033[1m${category}\033[0m [$simpleClassName]" + NEWLINE + methods.map { + s"${Console.BOLD}${category}${Console.RESET} [$simpleClassName]" + NEWLINE + methods.map { case (name, help) => "- " + getMethodSignature(name, help) + s": ${help.shortDescription}" }.mkString(NEWLINE) } @@ -90,7 +90,7 @@ case class Helper[T](classWithHelp: Class[T]) { private def getLongDescriptionPrintable(methodWithHelp: (String, Help), out: PrintStream) = { val (name, help) = methodWithHelp - s"\033[1m${getMethodSignature(name, help)}\033[0m [$simpleClassName]" + NEWLINE + help.longDescription + s"${Console.BOLD}${getMethodSignature(name, help)}${Console.RESET} [$simpleClassName]" + NEWLINE + help.longDescription } } diff --git a/src/test/scala/de/frosner/replhelper/HelperTest.scala b/src/test/scala/de/frosner/replhelper/HelperTest.scala index 6f4c2c2..624e8c9 100644 --- a/src/test/scala/de/frosner/replhelper/HelperTest.scala +++ b/src/test/scala/de/frosner/replhelper/HelperTest.scala @@ -94,11 +94,11 @@ class HelperTest extends FlatSpec with Matchers { val helper = Helper(new TestClass().getClass) helper.printAllMethods(out) result.toString.split(NEWLINE, -1) shouldBe Array( - s"\033[1ma\033[0m [TestClass]", + s"${Console.BOLD}a${Console.RESET} [TestClass]", "- help(): short help", "- xhelp(): short help", "", - s"\033[1mbbb\033[0m [TestClass]", + s"${Console.BOLD}bbb${Console.RESET} [TestClass]", "- helpWithParameters(i: Int)(s: String): sph", "" ) @@ -110,7 +110,7 @@ class HelperTest extends FlatSpec with Matchers { val helper = Helper(new TestClass().getClass) helper.printMethods("help", out) result.toString.split(NEWLINE, -1) shouldBe Array( - s"\033[1mhelp()\033[0m [TestClass]", + s"${Console.BOLD}help()${Console.RESET} [TestClass]", "long help", "" ) @@ -123,10 +123,10 @@ class HelperTest extends FlatSpec with Matchers { helper.printMethods("method", out) println(result.toString) result.toString.split(NEWLINE, -1) shouldBe Array( - s"\033[1mmethod()\033[0m [TestClass2]", + s"${Console.BOLD}method()${Console.RESET} [TestClass2]", "method without parameters", "", - s"\033[1mmethod(s: String)\033[0m [TestClass2]", + s"${Console.BOLD}method(s: String)${Console.RESET} [TestClass2]", "method with one parameter", "" ) @@ -138,7 +138,7 @@ class HelperTest extends FlatSpec with Matchers { val helper = Helper(new TestClass3().getClass) helper.printAllMethods(out) result.toString.split(NEWLINE, -1) shouldBe Array( - s"\033[1mcategory\033[0m [TestClass3]", + s"${Console.BOLD}category${Console.RESET} [TestClass3]", "- method(1)(2)(3)(4)(5)(6)(7)(8)(9): short", "" ) @@ -150,7 +150,7 @@ class HelperTest extends FlatSpec with Matchers { val helper = Helper(new TestClass3().getClass) helper.printMethods("method", out) result.toString.split(NEWLINE, -1) shouldBe Array( - s"\033[1mmethod(1)(2)(3)(4)(5)(6)(7)(8)(9)\033[0m [TestClass3]", + s"${Console.BOLD}method(1)(2)(3)(4)(5)(6)(7)(8)(9)${Console.RESET} [TestClass3]", "long", "" ) @@ -162,7 +162,7 @@ class HelperTest extends FlatSpec with Matchers { val helper = Helper(DummyObjectThatIsNoCompanion.getClass) helper.printMethods("method", out) result.toString.split(NEWLINE, -1) shouldBe Array( - s"\033[1mmethod()\033[0m [DummyObjectThatIsNoCompanion]", + s"${Console.BOLD}method()${Console.RESET} [DummyObjectThatIsNoCompanion]", "l", "" ) @@ -174,7 +174,7 @@ class HelperTest extends FlatSpec with Matchers { val helper = Helper(DummyObjectThatIsNoCompanion.getClass) helper.printAllMethods(out) result.toString.split(NEWLINE, -1) shouldBe Array( - s"\033[1mc\033[0m [DummyObjectThatIsNoCompanion]", + s"${Console.BOLD}c${Console.RESET} [DummyObjectThatIsNoCompanion]", "- method(): s", "" )