    001package com.typesafe.config.parser;
    002
    003import com.typesafe.config.ConfigParseOptions;
    004
    005import com.typesafe.config.impl.Parseable;
    006
    007import java.io.File;
    008import java.io.Reader;
    009
    010/**
    011 * Factory for creating {@link
    012 * com.typesafe.config.parser.ConfigDocument} instances.
    013 */
    014public final class ConfigDocumentFactory {
    015
    016    /**
    017     * Parses a Reader into a ConfigDocument instance.
    018     *
    019     * @param reader
    020     *       the reader to parse
    021     * @param options
    022     *       parse options to control how the reader is interpreted
    023     * @return the parsed configuration
    024     * @throws com.typesafe.config.ConfigException on IO or parse errors
    025     */
    026    public static ConfigDocument parseReader(Reader reader, ConfigParseOptions options) {
    027        return Parseable.newReader(reader, options).parseConfigDocument();
    028    }
    029
    030    /**
    031     * Parses a reader into a Config instance as with
    032     * {@link #parseReader(Reader,ConfigParseOptions)} but always uses the
    033     * default parse options.
    034     *
    035     * @param reader
    036     *       the reader to parse
    037     * @return the parsed configuration
    038     * @throws com.typesafe.config.ConfigException on IO or parse errors
    039     */
    040    public static ConfigDocument parseReader(Reader reader) {
    041        return parseReader(reader, ConfigParseOptions.defaults());
    042    }
    043
    044    /**
    045     * Parses a file into a ConfigDocument instance.
    046     *
    047     * @param file
    048     *       the file to parse
    049     * @param options
    050     *       parse options to control how the file is interpreted
    051     * @return the parsed configuration
    052     * @throws com.typesafe.config.ConfigException on IO or parse errors
    053     */
    054    public static ConfigDocument parseFile(File file, ConfigParseOptions options) {
    055        return Parseable.newFile(file, options).parseConfigDocument();
    056    }
    057
    058    /**
    059     * Parses a file into a ConfigDocument instance as with
    060     * {@link #parseFile(File,ConfigParseOptions)} but always uses the
    061     * default parse options.
    062     *
    063     * @param file
    064     *       the file to parse
    065     * @return the parsed configuration
    066     * @throws com.typesafe.config.ConfigException on IO or parse errors
    067     */
    068    public static ConfigDocument parseFile(File file) {
    069        return parseFile(file, ConfigParseOptions.defaults());
    070    }
    071
    072    /**
    073     * Parses a string which should be valid HOCON or JSON.
    074     *
    075     * @param s string to parse
    076     * @param options parse options
    077     * @return the parsed configuration
    078     */
    079    public static ConfigDocument parseString(String s, ConfigParseOptions options) {
    080        return Parseable.newString(s, options).parseConfigDocument();
    081    }
    082
    083    /**
    084     * Parses a string (which should be valid HOCON or JSON). Uses the
    085     * default parse options.
    086     *
    087     * @param s string to parse
    088     * @return the parsed configuration
    089     */
    090    public static ConfigDocument parseString(String s) {
    091        return parseString(s, ConfigParseOptions.defaults());
    092    }
    093}