From 5703334ac81db21de898bbc05e5e892106e88c30 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Wed, 12 Oct 2011 04:39:22 +0100 Subject: YamlConfiguration now correctly writes extra blank lines at the end if requested --- .../bukkit/configuration/file/YamlConfiguration.java | 15 ++++++++++----- .../configuration/file/FileConfigurationTest.java | 1 - .../configuration/file/YamlConfigurationTest.java | 17 ++++++++++++++++- 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."); @@ -45,6 +45,21 @@ public class YamlConfigurationTest extends FileConfigurationTest { assertEquals(expected, result); } + @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 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(); -- cgit v1.2.3