diff options
author | Paul Phillips <paulp@improving.org> | 2009-05-26 18:12:53 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-05-26 18:12:53 +0000 |
commit | 103c97f7deef02d81d6d87c21f751899c63683b1 (patch) | |
tree | 50680eb96e39e016f28df03582164cce1b73d5e2 /src/compiler/scala/tools/ant/ScalaTool.scala | |
parent | 5e12bab4777dc63711834cd39bf8514fb7e8da40 (diff) | |
download | scala-103c97f7deef02d81d6d87c21f751899c63683b1.tar.gz scala-103c97f7deef02d81d6d87c21f751899c63683b1.tar.bz2 scala-103c97f7deef02d81d6d87c21f751899c63683b1.zip |
A big yet interim patch emerging from my attemp...
A big yet interim patch emerging from my attempts to centralize common
classloader-related code. As it turns out, not that much of the
patch is directly associated with that. Most of it is cleanup in the
neighborhoods I was visiting, but there are a few new library files
about which I'm open to feedback:
scala/util/control/Exception - lots of exception handling code.
scala/net/Utility - what would be the first file in scala.net.*,
more code to follow if that sounds like a good package idea.
scala/util/ScalaClassLoader - mostly convenience methods right
now, more sophistication to come
Also, this adds a :jar command to the repl which adds a jar to your
classpath and replays the session.
Diffstat (limited to 'src/compiler/scala/tools/ant/ScalaTool.scala')
-rw-r--r-- | src/compiler/scala/tools/ant/ScalaTool.scala | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/src/compiler/scala/tools/ant/ScalaTool.scala b/src/compiler/scala/tools/ant/ScalaTool.scala index 6917da1287..9fc02859c8 100644 --- a/src/compiler/scala/tools/ant/ScalaTool.scala +++ b/src/compiler/scala/tools/ant/ScalaTool.scala @@ -169,20 +169,17 @@ class ScalaTool extends MatchingTask { private def error(message: String): Nothing = throw new BuildException(message, getLocation()) + // XXX encoding and generalize + private def getResourceAsCharStream(clazz: Class[_], resource: String): Stream[Char] = { + val stream = clazz.getClassLoader() getResourceAsStream resource + if (stream == null) Stream.empty + else Stream continually stream.read() takeWhile (_ != -1) map (_.asInstanceOf[Char]) + } + private def readAndPatchResource(resource: String, tokens: Map[String, String]): String = { - val chars = new Iterator[Char] { - private val stream = - this.getClass().getClassLoader().getResourceAsStream(resource) - private def readStream(): Char = stream.read().asInstanceOf[Char] - private var buf: Char = readStream() - def hasNext: Boolean = (buf != (-1.).asInstanceOf[Char]) - def next: Char = { - val bufbuf = buf - buf = readStream() - bufbuf - } - } + val chars = getResourceAsCharStream(this.getClass, resource).elements val builder = new StringBuilder() + while (chars.hasNext) { val char = chars.next if (char == '@') { @@ -212,13 +209,6 @@ class ScalaTool extends MatchingTask { writer.close() } - private def expandUnixVar(vars: Map[String,String]): Map[String,String] = - vars transform { (x, vari) => vari.replaceAll("#([^#]*)#", "\\$$1") } - - private def expandWinVar(vars: Map[String,String]): Map[String,String] = - vars transform { (x, vari) => vari.replaceAll("#([^#]*)#", "%_$1%") } - - /*============================================================================*\ ** The big execute method ** \*============================================================================*/ |