blob: a79507baa97e1cdea1f85a0926223c29e375c7ec (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/* NSC -- new Scala compiler
* Copyright 2005-2010 LAMP/EPFL
* @author Paul Phillips
*/
package scala.tools.nsc
package interpreter
import jline.console.completer.ArgumentCompleter.{ ArgumentDelimiter, ArgumentList }
class JLineDelimiter extends ArgumentDelimiter {
def delimit(buffer: CharSequence, cursor: Int) = Parsed(buffer.toString, cursor).asJlineArgumentList
def isDelimiter(buffer: CharSequence, cursor: Int) = Parsed(buffer.toString, cursor).isDelimiter
}
trait Delimited {
self: Parsed =>
def delimited: Char => Boolean
def escapeChars: List[Char] = List('\\')
def quoteChars: List[(Char, Char)] = List(('\'', '\''), ('"', '"'))
/** Break String into args based on delimiting function.
*/
protected def toArgs(s: String): List[String] =
if (s == "") Nil
else (s indexWhere isDelimiterChar) match {
case -1 => List(s)
case idx => (s take idx) :: toArgs(s drop (idx + 1))
}
def isDelimiterChar(ch: Char) = delimited(ch)
def isEscapeChar(ch: Char): Boolean = escapeChars contains ch
def isQuoteStart(ch: Char): Boolean = quoteChars map (_._1) contains ch
def isQuoteEnd(ch: Char): Boolean = quoteChars map (_._2) contains ch
}
|