summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/util/StringOps.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-09-18 00:09:46 -0700
committerPaul Phillips <paulp@improving.org>2013-09-18 07:13:38 -0700
commitf4267ccd96a9143c910c66a5b0436aaa64b7c9dc (patch)
tree174861715807c23ba332f78769a9f7e1377b7f02 /src/reflect/scala/reflect/internal/util/StringOps.scala
parentd45a3c8cc8e9f1d95d797d548a85abd8597f5bc7 (diff)
downloadscala-f4267ccd96a9143c910c66a5b0436aaa64b7c9dc.tar.gz
scala-f4267ccd96a9143c910c66a5b0436aaa64b7c9dc.tar.bz2
scala-f4267ccd96a9143c910c66a5b0436aaa64b7c9dc.zip
Cull extraneous whitespace.
One last flurry with the broom before I leave you slobs to code in your own filth. Eliminated all the trailing whitespace I could manage, with special prejudice reserved for the test cases which depended on the preservation of trailing whitespace. Was reminded I cannot figure out how to eliminate the trailing space on the "scala> " prompt in repl transcripts. At least reduced the number of such empty prompts by trimming transcript code on the way in. Routed ConsoleReporter's "printMessage" through a trailing whitespace stripping method which might help futureproof against the future of whitespace diseases. Deleted the up-to-40 lines of trailing whitespace found in various library files. It seems like only yesterday we performed whitespace surgery on the whole repo. Clearly it doesn't stick very well. I suggest it would work better to enforce a few requirements on the way in.
Diffstat (limited to 'src/reflect/scala/reflect/internal/util/StringOps.scala')
-rw-r--r--src/reflect/scala/reflect/internal/util/StringOps.scala32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/reflect/scala/reflect/internal/util/StringOps.scala b/src/reflect/scala/reflect/internal/util/StringOps.scala
index 4d98a344d8..14f349f502 100644
--- a/src/reflect/scala/reflect/internal/util/StringOps.scala
+++ b/src/reflect/scala/reflect/internal/util/StringOps.scala
@@ -7,7 +7,11 @@
\* */
package scala
-package reflect.internal.util
+package reflect
+package internal
+package util
+
+import scala.compat.Platform.EOL
/** This object provides utility methods to extract elements
* from Strings.
@@ -18,14 +22,26 @@ package reflect.internal.util
trait StringOps {
def oempty(xs: String*) = xs filterNot (x => x == null || x == "")
def ojoin(xs: String*): String = oempty(xs: _*) mkString " "
- def longestCommonPrefix(xs: List[String]): String = {
- if (xs.isEmpty || xs.contains("")) ""
- else xs.head.head match {
- case ch =>
- if (xs.tail forall (_.head == ch)) "" + ch + longestCommonPrefix(xs map (_.tail))
- else ""
- }
+ def longestCommonPrefix(xs: List[String]): String = xs match {
+ case Nil => ""
+ case xs if xs contains "" => ""
+ case x :: xs =>
+ val ch = x charAt 0
+ if (xs exists (_.head != ch)) ""
+ else "" + ch + longestCommonPrefix(xs map (_ substring 1))
+ }
+ /** Like String#trim, but trailing whitespace only.
+ */
+ def trimTrailingSpace(s: String): String = {
+ var end = s.length
+ while (end > 0 && s.charAt(end - 1).isWhitespace)
+ end -= 1
+
+ if (end == s.length) s
+ else s.substring(0, end)
}
+ /** Breaks the string into lines and strips each line before reassembling. */
+ def trimAllTrailingSpace(s: String): String = s.lines map trimTrailingSpace mkString EOL
def decompose(str: String, sep: Char): List[String] = {
def ws(start: Int): List[String] =