48 lines
1.6 KiB
Java
48 lines
1.6 KiB
Java
package fr.xephi.authme.message.updater;
|
|
|
|
import ch.jalu.configme.resource.PropertyReader;
|
|
import ch.jalu.configme.resource.YamlFileResource;
|
|
import org.yaml.snakeyaml.DumperOptions;
|
|
import org.yaml.snakeyaml.Yaml;
|
|
|
|
import java.io.File;
|
|
|
|
/**
|
|
* Extension of {@link YamlFileResource} to fine-tune the export style.
|
|
*/
|
|
public class MigraterYamlFileResource extends YamlFileResource {
|
|
|
|
private Yaml singleQuoteYaml;
|
|
|
|
public MigraterYamlFileResource(File file) {
|
|
super(file);
|
|
}
|
|
|
|
@Override
|
|
public PropertyReader createReader() {
|
|
return MessageMigraterPropertyReader.loadFromFile(getFile());
|
|
}
|
|
|
|
@Override
|
|
protected Yaml createNewYaml() {
|
|
if (singleQuoteYaml == null) {
|
|
DumperOptions options = new DumperOptions();
|
|
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
|
options.setAllowUnicode(true);
|
|
options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED);
|
|
// Overridden setting: don't split lines
|
|
options.setSplitLines(false);
|
|
singleQuoteYaml = new Yaml(options);
|
|
}
|
|
return singleQuoteYaml;
|
|
}
|
|
|
|
// Because we set the YAML object to put strings in single quotes, this method by default uses that YAML object
|
|
// and also puts all paths as single quotes. Override to just always return the same string since we know those
|
|
// are only message names (so never any conflicting strings like "true" or "0").
|
|
@Override
|
|
protected String escapePathElementIfNeeded(String path) {
|
|
return path;
|
|
}
|
|
}
|