From 51e8dac35cad15495e85878253fdd5cdc89c79e5 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Fri, 8 Apr 2011 19:19:41 -0400 Subject: [PATCH] tweaks to EvaluateConfiguration --- main/Build.scala | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/main/Build.scala b/main/Build.scala index a33d13a52..5482bddde 100644 --- a/main/Build.scala +++ b/main/Build.scala @@ -57,13 +57,15 @@ object EvaluateConfigurations def apply(eval: Eval, srcs: Seq[File], imports: Seq[String]): Seq[Setting[_]] = srcs flatMap { src => evaluateConfiguration(eval, src, imports) } def evaluateConfiguration(eval: Eval, src: File, imports: Seq[String]): Seq[Setting[_]] = - evaluateConfiguration(eval, src.getPath, IO.readLines(src), imports) - def evaluateConfiguration(eval: Eval, name: String, lines: Seq[String], imports: Seq[String]): Seq[Setting[_]] = + evaluateConfiguration(eval, src.getPath, IO.readLines(src), imports, 0) + def evaluateConfiguration(eval: Eval, name: String, lines: Seq[String], imports: Seq[String], offset: Int): Seq[Setting[_]] = { - val (importExpressions, settingExpressions) = splitExpressions(name, lines) - for((settingExpression,line) <- settingExpressions) yield - evaluateSetting(eval, name, (imports.map(s => (s, -1)) ++ importExpressions), settingExpression, line) + val (importExpressions, settingExpressions) = splitExpressions(lines) + for((settingExpression,line) <- addOffset(offset, settingExpressions)) yield + evaluateSetting(eval, name, (imports.map(s => (s, -1)) ++ addOffset(offset, importExpressions)), settingExpression, line) } + def addOffset(offset: Int, lines: Seq[(String,Int)]): Seq[(String,Int)] = + lines.map { case (s, i) => (s, i + offset) } def evaluateSetting(eval: Eval, name: String, imports: Seq[(String,Int)], expression: String, line: Int): Setting[_] = { @@ -75,7 +77,7 @@ object EvaluateConfigurations result.value.asInstanceOf[Setting[_]] } private[this] def fstS(f: String => Boolean): ((String,Int)) => Boolean = { case (s,i) => f(s) } - def splitExpressions(name: String, lines: Seq[String]): (Seq[(String,Int)], Seq[(String,Int)]) = + def splitExpressions(lines: Seq[String]): (Seq[(String,Int)], Seq[(String,Int)]) = { val blank = (_: String).trim.isEmpty val importOrBlank = fstS(t => blank(t) || (t.trim startsWith "import "))