summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/bukkit/configuration/file/YamlConfiguration.java15
-rw-r--r--src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java1
-rw-r--r--src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java17
3 files changed, 26 insertions, 7 deletions
diff --git a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
index 2ce6fcba..4bd9d4c4 100644
--- a/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
+++ b/src/main/java/org/bukkit/configuration/file/YamlConfiguration.java
@@ -137,12 +137,17 @@ public class YamlConfiguration extends FileConfiguration {
}
StringBuilder builder = new StringBuilder();
- String[] lines = header.split("\r?\n");
+ String[] lines = header.split("\r?\n", -1);
+ boolean startedHeader = false;
- for (int i = 0; i < lines.length; i++) {
- builder.append(COMMENT_PREFIX);
- builder.append(lines[i]);
- builder.append("\n");
+ for (int i = lines.length - 1; i >= 0; i--) {
+ builder.insert(0, "\n");
+
+ if ((startedHeader) || (lines[i].length() != 0)) {
+ builder.insert(0, lines[i]);
+ builder.insert(0, COMMENT_PREFIX);
+ startedHeader = true;
+ }
}
return builder.toString();
diff --git a/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java b/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java
index 99eba4e1..5deb4581 100644
--- a/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java
+++ b/src/test/java/org/bukkit/configuration/file/FileConfigurationTest.java
@@ -6,7 +6,6 @@ import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Map;
-import java.util.Scanner;
import org.bukkit.configuration.MemoryConfigurationTest;
import org.junit.Rule;
import org.junit.Test;
diff --git a/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java b/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java
index 5db017a3..3ec206de 100644
--- a/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java
+++ b/src/test/java/org/bukkit/configuration/file/YamlConfigurationTest.java
@@ -31,7 +31,7 @@ public class YamlConfigurationTest extends FileConfigurationTest {
}
@Test
- public void testSaveToStringWithheader() {
+ public void testSaveToStringWithHeader() {
YamlConfiguration config = getConfig();
config.options().header("This is a sample\nheader.");
@@ -46,6 +46,21 @@ public class YamlConfigurationTest extends FileConfigurationTest {
}
@Test
+ public void testSaveToStringWithLongHeader() {
+ YamlConfiguration config = getConfig();
+ config.options().header("This is a sample\nheader.\n\nNewline above should be commented.\n\n");
+
+ for (Map.Entry<String, Object> entry : getTestValues().entrySet()) {
+ config.set(entry.getKey(), entry.getValue());
+ }
+
+ String result = config.saveToString();
+ String expected = "# This is a sample\n# header.\n# \n# Newline above should be commented.\n\n\n" + getTestValuesString();
+
+ assertEquals(expected, result);
+ }
+
+ @Test
public void testSaveToStringWithIndent() {
YamlConfiguration config = getConfig();
config.options().indent(9);