/FileExtraction/Java_unseen/Wind-Development_WindSpigot/WindSpigot-API/src/main/java/org/bukkit/configuration/file/YamlConfigurationOptions.java
package org.bukkit.configuration.file;

import org.apache.commons.lang.Validate;

/**
 * Various settings for controlling the input and output of a
 * {@link YamlConfiguration}
 */
public class YamlConfigurationOptions extends FileConfigurationOptions {
	private int indent = 2;

	protected YamlConfigurationOptions(YamlConfiguration configuration) {
		super(configuration);
	}

	@Override
	public YamlConfiguration configuration() {
		return (YamlConfiguration) super.configuration();
	}

	@Override
	public YamlConfigurationOptions copyDefaults(boolean value) {
		super.copyDefaults(value);
		return this;
	}

	@Override
	public YamlConfigurationOptions pathSeparator(char value) {
		super.pathSeparator(value);
		return this;
	}

	@Override
	public YamlConfigurationOptions header(String value) {
		super.header(value);
		return this;
	}

	@Override
	public YamlConfigurationOptions copyHeader(boolean value) {
		super.copyHeader(value);
		return this;
	}

	/**
	 * Gets how much spaces should be used to indent each line.
	 * <p>
	 * The minimum value this may be is 2, and the maximum is 9.
	 *
	 * @return How much to indent by
	 */
	public int indent() {
		return indent;
	}

	/**
	 * Sets how much spaces should be used to indent each line.
	 * <p>
	 * The minimum value this may be is 2, and the maximum is 9.
	 *
	 * @param value New indent
	 * @return This object, for chaining
	 */
	public YamlConfigurationOptions indent(int value) {
		Validate.isTrue(value >= 2, "Indent must be at least 2 characters");
		Validate.isTrue(value <= 9, "Indent cannot be greater than 9 characters");

		this.indent = value;
		return this;
	}
}
