summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/util/StringOps.scala
diff options
context:
space:
mode:
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] =