diff --git a/.gitignore b/.gitignore
index e762de7f9..4d856c4e5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
target/
__pycache__
+.idea
+.idea_modules
diff --git a/main/src/main/scala/sbt/SessionSettingsNoBlankies.scala b/main/src/main/scala/sbt/SessionSettingsNoBlankies.scala
index 806332def..762e8085b 100644
--- a/main/src/main/scala/sbt/SessionSettingsNoBlankies.scala
+++ b/main/src/main/scala/sbt/SessionSettingsNoBlankies.scala
@@ -18,16 +18,16 @@ object SessionSettingsNoBlankies {
oldLinesToNew(newContent, lineMap.tail)
}
- private def toNewContent(content: List[String], tuple: (Int, List[(Int, List[String])])): List[String] = {
- val (from, newSettingSeq) = tuple
+ private def toNewContent(content: List[String], setCommands: (Int, List[(Int, List[String])])): List[String] = {
+ val (from, newSettings) = setCommands
- val newTreeStringSeqMap = newSettingSeq.seq.map {
+ val newTreeStringsMap = newSettings.map {
case (_, lines) => toTreeStringMap(lines)
}
- val to = newSettingSeq.map(_._1).max
+ val to = newSettings.map(_._1).max
val originalLine = content.slice(from - 1, to - 1)
- val operations = newTreeStringSeqMap.flatMap {
+ val operations = newTreeStringsMap.flatMap {
map =>
map.flatMap {
case (name, (startIndex, statement)) =>
@@ -39,7 +39,7 @@ object SessionSettingsNoBlankies {
}
}
}
- val statements = originalLine.mkString("\n")
+ val statements = XmlContent.handleXmlContent(originalLine.mkString("\n"))
val sortedOperations = operations.sortBy(_._1)(REVERSE_ORDERING_INT)
val newContent = sortedOperations.foldLeft(statements) {
case (acc, (startIndex, old, newStatement)) =>
@@ -58,8 +58,8 @@ object SessionSettingsNoBlankies {
}
private def toTreeStringMap(lines: List[String]) = {
-
- val trees = SplitExpressionsNoBlankies(new File("fake"), lines).settingsTrees
+ val split = SplitExpressionsNoBlankies(new File("fake"), lines)
+ val trees = split.settingsTrees
val seq = trees.map {
case (statement, tree) =>
(extractSettingName(tree), (tree.pos.start, statement))
diff --git a/main/src/main/scala/sbt/SplitExpressionsNoBlankies.scala b/main/src/main/scala/sbt/SplitExpressionsNoBlankies.scala
index 14fa6285d..82bff4074 100644
--- a/main/src/main/scala/sbt/SplitExpressionsNoBlankies.scala
+++ b/main/src/main/scala/sbt/SplitExpressionsNoBlankies.scala
@@ -28,12 +28,12 @@ case class SplitExpressionsNoBlankies(file: File, lines: Seq[String]) {
val toolbox = mirror.mkToolBox(options = "-Yrangepos")
val indexedLines = lines.toIndexedSeq
val original = indexedLines.mkString(END_OF_LINE)
- val merged = handleXmlContent(original)
+ val modifiedContent = handleXmlContent(original)
val fileName = file.getAbsolutePath
val parsed =
try {
- toolbox.parse(merged)
+ toolbox.parse(modifiedContent)
} catch {
case e: ToolBoxError =>
val seq = toolbox.frontEnd.infos.map { i =>
@@ -41,7 +41,7 @@ case class SplitExpressionsNoBlankies(file: File, lines: Seq[String]) {
}
throw new MessageOnlyException(
s"""======
- |$merged
+ |$modifiedContent
|======
|${seq.mkString(EOL)}""".stripMargin)
}
@@ -58,7 +58,7 @@ case class SplitExpressionsNoBlankies(file: File, lines: Seq[String]) {
}
def convertImport(t: Tree): (String, Int) =
- (merged.substring(t.pos.start, t.pos.end), t.pos.line - 1)
+ (modifiedContent.substring(t.pos.start, t.pos.end), t.pos.line - 1)
/**
* See BugInParser
@@ -69,7 +69,7 @@ case class SplitExpressionsNoBlankies(file: File, lines: Seq[String]) {
def parseStatementAgain(t: Tree, originalStatement: String): String = {
val statement = util.Try(toolbox.parse(originalStatement)) match {
case util.Failure(th) =>
- val missingText = tryWithNextStatement(merged, t.pos.end, t.pos.line, fileName, th)
+ val missingText = tryWithNextStatement(modifiedContent, t.pos.end, t.pos.line, fileName, th)
originalStatement + missingText
case _ =>
originalStatement
@@ -79,7 +79,7 @@ case class SplitExpressionsNoBlankies(file: File, lines: Seq[String]) {
def convertStatement(t: Tree): Option[(String, Tree, LineRange)] =
if (t.pos.isDefined) {
- val originalStatement = merged.substring(t.pos.start, t.pos.end)
+ val originalStatement = modifiedContent.substring(t.pos.start, t.pos.end)
val statement = parseStatementAgain(t, originalStatement)
val numberLines = statement.count(c => c == END_OF_LINE_CHAR)
Some((statement, t, LineRange(t.pos.line - 1, t.pos.line + numberLines)))
diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/1.xml b/main/src/test/resources/session-settings/1.sbt.txt_1/1.xml
index 752deca9b..a67818d62 100644
--- a/main/src/test/resources/session-settings/1.sbt.txt_1/1.xml
+++ b/main/src/test/resources/session-settings/1.sbt.txt_1/1.xml
@@ -2,6 +2,6 @@
1
2
- name := "alaMaKota"
+
\ No newline at end of file
diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/2.xml b/main/src/test/resources/session-settings/1.sbt.txt_1/2.xml
index 7aebf36a6..20e5c790f 100644
--- a/main/src/test/resources/session-settings/1.sbt.txt_1/2.xml
+++ b/main/src/test/resources/session-settings/1.sbt.txt_1/2.xml
@@ -2,11 +2,11 @@
1
2
- name := "alaMaKota"
+
25
26
- organization := "scalania"
+
\ No newline at end of file
diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/3.xml b/main/src/test/resources/session-settings/1.sbt.txt_1/3.xml
new file mode 100644
index 000000000..efdba1fe1
--- /dev/null
+++ b/main/src/test/resources/session-settings/1.sbt.txt_1/3.xml
@@ -0,0 +1,7 @@
+
+
+ 4
+ 11
+
+
+
\ No newline at end of file
diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/3.xml.result b/main/src/test/resources/session-settings/1.sbt.txt_1/3.xml.result
new file mode 100644
index 000000000..0120a790a
--- /dev/null
+++ b/main/src/test/resources/session-settings/1.sbt.txt_1/3.xml.result
@@ -0,0 +1,21 @@
+name := "newName"
+libraryDependencies := Seq("org.scala-sbt" %% "sbinary" % "0.4.1")
+
+lazy val checkPom = taskKey[Unit]("check pom to ensure no sections are generated"); checkPom := "OK";scalacOptions := Seq("-deprecation")
+
+val b = ( )
+val a =
+
+
+/*
+
+*/
+
+
+organization := "jozwikr" // OK
+
+scalaVersion := "2.9.2"
+
+organization := "ololol"
+
+
diff --git a/main/src/test/resources/session-settings/2.sbt.txt_1/1.xml b/main/src/test/resources/session-settings/2.sbt.txt_1/1.xml
index 752deca9b..a67818d62 100644
--- a/main/src/test/resources/session-settings/2.sbt.txt_1/1.xml
+++ b/main/src/test/resources/session-settings/2.sbt.txt_1/1.xml
@@ -2,6 +2,6 @@
1
2
- name := "alaMaKota"
+
\ No newline at end of file
diff --git a/main/src/test/resources/session-settings/3.sbt.txt b/main/src/test/resources/session-settings/3.sbt.txt
new file mode 100644
index 000000000..6db83e79c
--- /dev/null
+++ b/main/src/test/resources/session-settings/3.sbt.txt
@@ -0,0 +1,16 @@
+import sbt._
+
+val scmpom = taskKey[xml.NodeBuffer]("Node buffer")
+
+scmpom :=
+ git@github.com:mohiva/play-html-compressor.git
+ scm:git:git@github.com:mohiva/play-html-compressor.git
+
+
+
+ akkie
+ Christian Kaps
+ http://mohiva.com
+
+
+
\ No newline at end of file
diff --git a/main/src/test/resources/session-settings/3.sbt.txt_1/1.xml b/main/src/test/resources/session-settings/3.sbt.txt_1/1.xml
new file mode 100644
index 000000000..9f7ba5288
--- /dev/null
+++ b/main/src/test/resources/session-settings/3.sbt.txt_1/1.xml
@@ -0,0 +1,7 @@
+
+
+ 5
+ 18
+ OK]]>
+
+
\ No newline at end of file
diff --git a/main/src/test/resources/session-settings/3.sbt.txt_1/1.xml.result b/main/src/test/resources/session-settings/3.sbt.txt_1/1.xml.result
new file mode 100644
index 000000000..6b1956fb1
--- /dev/null
+++ b/main/src/test/resources/session-settings/3.sbt.txt_1/1.xml.result
@@ -0,0 +1,5 @@
+import sbt._
+
+val scmpom = taskKey[xml.NodeBuffer]("Node buffer")
+
+scmpom := ( OK )
\ No newline at end of file
diff --git a/main/src/test/scala/sbt/SessionSettingsSpec.scala b/main/src/test/scala/sbt/SessionSettingsSpec.scala
index 7cdbdcf58..0f5097478 100644
--- a/main/src/test/scala/sbt/SessionSettingsSpec.scala
+++ b/main/src/test/scala/sbt/SessionSettingsSpec.scala
@@ -9,14 +9,14 @@ import scala.collection.immutable.{ SortedMap, TreeMap }
import scala.io.Source
import scala.xml.XML
-abstract class AbstractSessionSettingsSpec(folder: String) extends AbstractSpec {
+abstract class AbstractSessionSettingsSpec(folder: String, printDetails: Boolean = false) extends AbstractSpec {
protected val rootPath = getClass.getResource("").getPath + folder
println(s"Reading files from: $rootPath")
protected val rootDir = new File(rootPath)
"SessionSettings " should {
"Be identical for empty map " in {
- def unit(f: File) = Seq((Source.fromFile(f).getLines().toSeq, SortedMap.empty[Int, List[(Int, List[String])]]))
+ def unit(f: File) = Seq((Source.fromFile(f).getLines().toList, SortedMap.empty[Int, List[(Int, List[String])]]))
runTestOnFiles(unit)
}
@@ -25,7 +25,7 @@ abstract class AbstractSessionSettingsSpec(folder: String) extends AbstractSpec
}
}
- private def runTestOnFiles(expectedResultAndMap: File => Seq[(Seq[String], SortedMap[Int, List[(Int, List[String])]])]): MatchResult[GenTraversableOnce[File]] = {
+ private def runTestOnFiles(expectedResultAndMap: File => Seq[(List[String], SortedMap[Int, List[(Int, List[String])]])]): MatchResult[GenTraversableOnce[File]] = {
val allFiles = rootDir.listFiles(new FilenameFilter() {
def accept(dir: File, name: String) = name.endsWith(".sbt.txt")
@@ -34,9 +34,11 @@ abstract class AbstractSessionSettingsSpec(folder: String) extends AbstractSpec
file =>
val originalLines = Source.fromFile(file).getLines().toList
foreach(expectedResultAndMap(file)) {
- case (expectedResult, map) =>
- val result = SessionSettingsNoBlankies.oldLinesToNew(originalLines, map)
- expectedResult === result
+ case (expectedResultList, map) =>
+ val resultList = SessionSettingsNoBlankies.oldLinesToNew(originalLines, map)
+ val expected = SplitExpressionsNoBlankies(file, expectedResultList)
+ val result = SplitExpressionsNoBlankies(file, resultList)
+ result.settings must_== expected.settings
}
}
}
@@ -55,7 +57,7 @@ abstract class AbstractSessionSettingsSpec(folder: String) extends AbstractSpec
})
files.map { xmlFile =>
val xml = XML.loadFile(xmlFile)
- val result = Source.fromFile(xmlFile.getAbsolutePath + ".result").getLines().toSeq
+ val result = Source.fromFile(xmlFile.getAbsolutePath + ".result").getLines().toList
val tupleCollection = (xml \\ "settings" \\ "setting").map {
node =>
val set = (node \\ "set").text
@@ -73,4 +75,4 @@ abstract class AbstractSessionSettingsSpec(folder: String) extends AbstractSpec
}
-class SessionSettingsSpec extends AbstractSessionSettingsSpec("../session-settings")
+class SessionSettingsSpec extends AbstractSessionSettingsSpec("../session-settings")
\ No newline at end of file