001    package org.bukkit.configuration.file;
002    
003    import org.apache.commons.lang.Validate;
004    
005    /**
006     * Various settings for controlling the input and output of a {@link
007     * YamlConfiguration}
008     */
009    public class YamlConfigurationOptions extends FileConfigurationOptions {
010        private int indent = 2;
011    
012        protected YamlConfigurationOptions(YamlConfiguration configuration) {
013            super(configuration);
014        }
015    
016        @Override
017        public YamlConfiguration configuration() {
018            return (YamlConfiguration) super.configuration();
019        }
020    
021        @Override
022        public YamlConfigurationOptions copyDefaults(boolean value) {
023            super.copyDefaults(value);
024            return this;
025        }
026    
027        @Override
028        public YamlConfigurationOptions pathSeparator(char value) {
029            super.pathSeparator(value);
030            return this;
031        }
032    
033        @Override
034        public YamlConfigurationOptions header(String value) {
035            super.header(value);
036            return this;
037        }
038    
039        @Override
040        public YamlConfigurationOptions copyHeader(boolean value) {
041            super.copyHeader(value);
042            return this;
043        }
044    
045        /**
046         * Gets how much spaces should be used to indent each line.
047         * <p>
048         * The minimum value this may be is 2, and the maximum is 9.
049         *
050         * @return How much to indent by
051         */
052        public int indent() {
053            return indent;
054        }
055    
056        /**
057         * Sets how much spaces should be used to indent each line.
058         * <p>
059         * The minimum value this may be is 2, and the maximum is 9.
060         *
061         * @param value New indent
062         * @return This object, for chaining
063         */
064        public YamlConfigurationOptions indent(int value) {
065            Validate.isTrue(value >= 2, "Indent must be at least 2 characters");
066            Validate.isTrue(value <= 9, "Indent cannot be greater than 9 characters");
067    
068            this.indent = value;
069            return this;
070        }
071    }