geforkt von Mirrors/Paper
Loading a FileConfiguration (Yaml/) should remember the previously saved header
By: Nathan Adams <dinnerbone@dinnerbone.com>
Dieser Commit ist enthalten in:
Ursprung
ea55a50756
Commit
69a2349368
@ -61,6 +61,7 @@ public class YamlConfiguration extends FileConfiguration {
|
|||||||
throw new InvalidConfigurationException("Specified contents is not a valid Configuration", ex);
|
throw new InvalidConfigurationException("Specified contents is not a valid Configuration", ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
options().header(parseHeader(contents));
|
||||||
deserializeValues(input, this);
|
deserializeValues(input, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,6 +130,32 @@ public class YamlConfiguration extends FileConfiguration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected String parseHeader(String input) {
|
||||||
|
String[] lines = input.split("\r?\n", -1);
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
boolean readingHeader = true;
|
||||||
|
|
||||||
|
for (int i = 0; (i < lines.length) && (readingHeader); i++) {
|
||||||
|
String line = lines[i];
|
||||||
|
|
||||||
|
if (line.startsWith(COMMENT_PREFIX)) {
|
||||||
|
if (i > 0) {
|
||||||
|
result.append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (line.length() > COMMENT_PREFIX.length()) {
|
||||||
|
result.append(line.substring(COMMENT_PREFIX.length()));
|
||||||
|
}
|
||||||
|
} else if (line.length() == 0) {
|
||||||
|
result.append("\n");
|
||||||
|
} else {
|
||||||
|
readingHeader = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
protected String buildHeader() {
|
protected String buildHeader() {
|
||||||
String header = options().header();
|
String header = options().header();
|
||||||
|
|
||||||
|
@ -60,6 +60,25 @@ public class YamlConfigurationTest extends FileConfigurationTest {
|
|||||||
assertEquals(expected, result);
|
assertEquals(expected, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testParseHeader() throws Exception {
|
||||||
|
YamlConfiguration config = getConfig();
|
||||||
|
Map<String, Object> values = getTestValues();
|
||||||
|
String saved = getTestValuesString();
|
||||||
|
String header = "# This is a sample\n# header.\n# \n# Newline above should be commented.\n\n\n";
|
||||||
|
String expected = "This is a sample\nheader.\n\nNewline above should be commented.\n\n";
|
||||||
|
|
||||||
|
config.loadFromString(header + saved);
|
||||||
|
|
||||||
|
assertEquals(expected, config.options().header());
|
||||||
|
|
||||||
|
for (Map.Entry<String, Object> entry : values.entrySet()) {
|
||||||
|
assertEquals(entry.getValue(), config.get(entry.getKey()));
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(values.keySet(), config.getKeys(true));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSaveToStringWithIndent() {
|
public void testSaveToStringWithIndent() {
|
||||||
YamlConfiguration config = getConfig();
|
YamlConfiguration config = getConfig();
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren