/src/main/scala/dispatch/Util.scala

http://scouchdb.googlecode.com/ · Scala · 48 lines · 46 code · 2 blank · 0 comment · 13 complexity · 045e903bfac8e8f540d52d09f6ca08f0 MD5 · raw file

  1. package dispatch
  2. object Util {
  3. def quote(s: String): String = s match {
  4. case null => "null"
  5. case _ => {
  6. new StringBuilder(s.length + 2)
  7. .append('"')
  8. .append(s.foldLeft(new StringBuilder(""))((a, b) => a.append(escape(b, '"'))).toString)
  9. .append('"')
  10. .toString
  11. }
  12. }
  13. private def escape(c: Char, quoteChar: Char): String = c match {
  14. case '"' if (c == quoteChar) => "\\" + c
  15. case '"' => "" + c
  16. case '\'' if (c == quoteChar) => "\\" + c
  17. case '\'' => "" + c
  18. case '/' => "\\/"
  19. case '\\' => "\\\\"
  20. case '\b' => "\\b"
  21. case '\f' => "\\f"
  22. case '\n' => "\\n"
  23. case '\r' => "\\r"
  24. case '\t' => "\\t"
  25. case x if (x < 32 || x > 126) => {
  26. val hex = Integer.toHexString(x)
  27. val len = hex.length
  28. "\\u" + (if (len < 4) "0000".substring(len) + hex else hex)
  29. }
  30. case _ => "" + c
  31. }
  32. import java.io._
  33. def readTillNl(in: InputStreamReader): String = {
  34. var c = -1
  35. var str = new StringBuffer
  36. do {
  37. c = in.read
  38. if (c != '\n' && c != -1) {
  39. str.append(c.toChar)
  40. }
  41. }
  42. while (c != '\n' && c != -1)
  43. str.toString
  44. }
  45. }