diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-11-30 15:51:36 +0100 |
---|---|---|
committer | Felix Mulder <felix.mulder@gmail.com> | 2016-11-30 16:55:59 +0100 |
commit | e4f7b386d42352cea79b2a385668ce47e15cb13c (patch) | |
tree | 2a7105e5f004cee9f5b07744422b030c5fda0d7f /library | |
parent | a190cfe4f0ece8221d8d7e4b27e4bf73ca665a56 (diff) | |
download | dotty-e4f7b386d42352cea79b2a385668ce47e15cb13c.tar.gz dotty-e4f7b386d42352cea79b2a385668ce47e15cb13c.tar.bz2 dotty-e4f7b386d42352cea79b2a385668ce47e15cb13c.zip |
Optimize `Show[String]` instance
Diffstat (limited to 'library')
-rw-r--r-- | library/src/dotty/Show.scala | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/library/src/dotty/Show.scala b/library/src/dotty/Show.scala index 103341d00..36327b834 100644 --- a/library/src/dotty/Show.scala +++ b/library/src/dotty/Show.scala @@ -19,16 +19,20 @@ object Show { // // charEscapeSeq ::= ‘\‘ (‘b‘ | ‘t‘ | ‘n‘ | ‘f‘ | ‘r‘ | ‘"‘ | ‘'‘ | ‘\‘) def show(str: String) = - "\"" + - str - .replaceAll("\b", "\\\\b") - .replaceAll("\t", "\\\\t") - .replaceAll("\n", "\\\\n") - .replaceAll("\f", "\\\\f") - .replaceAll("\r", "\\\\r") - .replaceAll("\'", "\\\\'") - .replaceAll("\"", "\\\\\"") + - "\"" + "\"" + { + val sb = new StringBuilder + str.foreach { + case '\b' => sb.append("\\b") + case '\t' => sb.append("\\t") + case '\n' => sb.append("\\n") + case '\f' => sb.append("\\f") + case '\r' => sb.append("\\r") + case '\'' => sb.append("\\'") + case '\"' => sb.append("\\\"") + case c => sb.append(c) + } + sb.toString + } + "\"" } implicit val intShow = new Show[Int] { |