class PropsLoaderExt extends PropsLoader {

    @Override
    public boolean isSupport(String suffix) {
        if (suffix == null) {
            return false;
        }

        return suffix.endsWith(".properties") || suffix.endsWith(".yml");
    }

    @Override
    public Properties load(URL url) throws IOException {<FILL_FUNCTION_BODY>}

    @Override
    public Properties build(String text) throws IOException {
        text = text.trim();

        int idx1 = text.indexOf("=");
        int idx2 = text.indexOf(":");

        //有{开头
        if(text.startsWith("{") && text.endsWith("}")){
            PropertiesJson tmp  =new PropertiesJson();
            tmp.loadJson(text);
            return tmp;
        }

        //有[开头
        if(text.startsWith("[") && text.endsWith("]")){
            PropertiesJson tmp  =new PropertiesJson();
            tmp.loadJson(text);
            return tmp;
        }



        //有=
        if (idx1 > 0 && (idx1 < idx2 || idx2 < 0)) {
            Properties tmp = new Properties();
            tmp.load(new StringReader(text));
            return tmp;
        }

        //有:
        if (idx2 > 0 && (idx2 < idx1 || idx1 < 0)) {
            PropertiesYaml tmp = new PropertiesYaml();
            tmp.loadYml(new StringReader(text));
            return tmp;
        }

        return new Properties();
    }
}

        if (url == null) {
            return null;
        }

        String fileName = url.toString();

        if (fileName.endsWith(".properties")) {
            if (Solon.app() != null && Solon.cfg().isDebugMode()) {
                LogUtil.global().trace(fileName);
            }

            Properties tmp = new Properties();
            try (InputStreamReader reader = new InputStreamReader(url.openStream(), Solon.encoding())) {
                tmp.load(reader);
            }
            return tmp;
        }

        if (fileName.endsWith(".yml")) {
            if (Solon.app() != null && Solon.cfg().isDebugMode()) {
                LogUtil.global().trace(fileName);
            }

            PropertiesYaml tmp = new PropertiesYaml();
            try (InputStreamReader reader = new InputStreamReader(url.openStream(), Solon.encoding())) {
                tmp.loadYml(reader);
            }
            return tmp;
        }

        throw new RuntimeException("This profile is not supported: " + fileName);
    
<methods>public non-sealed void <init>() ,public java.util.Properties build(java.lang.String) throws java.io.IOException,public static org.noear.solon.core.PropsLoader global() ,public static void globalSet(org.noear.solon.core.PropsLoader) ,public boolean isSupport(java.lang.String) ,public java.util.Properties load(java.net.URL) throws java.io.IOException<variables>private static org.noear.solon.core.PropsLoader global