summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/ant/ScalaTool.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-05-26 18:12:53 +0000
committerPaul Phillips <paulp@improving.org>2009-05-26 18:12:53 +0000
commit103c97f7deef02d81d6d87c21f751899c63683b1 (patch)
tree50680eb96e39e016f28df03582164cce1b73d5e2 /src/compiler/scala/tools/ant/ScalaTool.scala
parent5e12bab4777dc63711834cd39bf8514fb7e8da40 (diff)
downloadscala-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.scala28
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 **
\*============================================================================*/