    001package com.typesafe.config;
    002
    003import java.util.List;
    004
    005import com.typesafe.config.impl.ConfigImplUtil;
    006
    007/**
    008 * Contains static utility methods.
    009 *
    010 */
    011public final class ConfigUtil {
    012    private ConfigUtil() {
    013
    014    }
    015
    016    /**
    017     * Quotes and escapes a string, as in the JSON specification.
    018     *
    019     * @param s
    020     *            a string
    021     * @return the string quoted and escaped
    022     */
    023    public static String quoteString(String s) {
    024        return ConfigImplUtil.renderJsonString(s);
    025    }
    026
    027    /**
    028     * Converts a list of keys to a path expression, by quoting the path
    029     * elements as needed and then joining them separated by a period. A path
    030     * expression is usable with a {@link Config}, while individual path
    031     * elements are usable with a {@link ConfigObject}.
    032     * <p>
    033     * See the overview documentation for {@link Config} for more detail on path
    034     * expressions vs. keys.
    035     *
    036     * @param elements
    037     *            the keys in the path
    038     * @return a path expression
    039     * @throws ConfigException
    040     *             if there are no elements
    041     */
    042    public static String joinPath(String... elements) {
    043        return ConfigImplUtil.joinPath(elements);
    044    }
    045
    046    /**
    047     * Converts a list of strings to a path expression, by quoting the path
    048     * elements as needed and then joining them separated by a period. A path
    049     * expression is usable with a {@link Config}, while individual path
    050     * elements are usable with a {@link ConfigObject}.
    051     * <p>
    052     * See the overview documentation for {@link Config} for more detail on path
    053     * expressions vs. keys.
    054     *
    055     * @param elements
    056     *            the keys in the path
    057     * @return a path expression
    058     * @throws ConfigException
    059     *             if the list is empty
    060     */
    061    public static String joinPath(List<String> elements) {
    062        return ConfigImplUtil.joinPath(elements);
    063    }
    064
    065    /**
    066     * Converts a path expression into a list of keys, by splitting on period
    067     * and unquoting the individual path elements. A path expression is usable
    068     * with a {@link Config}, while individual path elements are usable with a
    069     * {@link ConfigObject}.
    070     * <p>
    071     * See the overview documentation for {@link Config} for more detail on path
    072     * expressions vs. keys.
    073     *
    074     * @param path
    075     *            a path expression
    076     * @return the individual keys in the path
    077     * @throws ConfigException
    078     *             if the path expression is invalid
    079     */
    080    public static List<String> splitPath(String path) {
    081        return ConfigImplUtil.splitPath(path);
    082    }
    083}