public static Type getPrefixedValueType()

in kit/src/main/java/com/oracle/javafx/scenebuilder/kit/metadata/util/PrefixedValue.java [247:307]


    public static Type getPrefixedValueType(String prefixedValue) {
        final Type result;
        
        String v = prefixedValue;
        if (v.startsWith(FXMLLoader.ESCAPE_PREFIX)) {
            v = v.substring(FXMLLoader.ESCAPE_PREFIX.length());
            if (v.isEmpty()
                || !(v.startsWith(FXMLLoader.ESCAPE_PREFIX)
                    || v.startsWith(FXMLLoader.RELATIVE_PATH_PREFIX)
                    || v.startsWith(FXMLLoader.RESOURCE_KEY_PREFIX)
                    || v.startsWith(FXMLLoader.EXPRESSION_PREFIX)
                    || v.startsWith(FXMLLoader.BI_DIRECTIONAL_BINDING_PREFIX))) {
                result = Type.INVALID;
            } else {
                result = Type.PLAIN_STRING;
            }
        } else if (v.startsWith(FXMLLoader.RELATIVE_PATH_PREFIX)) {
            v = v.substring(FXMLLoader.RELATIVE_PATH_PREFIX.length());
            if (v.isEmpty()) {
                result = Type.INVALID;
            } else if (v.startsWith(FXMLLoader.RELATIVE_PATH_PREFIX)) {
                // The prefix was escaped
                result = Type.PLAIN_STRING;
            } else if (v.charAt(0) == '/') {
                result = Type.CLASSLOADER_RELATIVE_PATH;
            } else {
                result = Type.DOCUMENT_RELATIVE_PATH;
            }
        } else if (v.startsWith(FXMLLoader.RESOURCE_KEY_PREFIX)) {
            v = v.substring(FXMLLoader.RESOURCE_KEY_PREFIX.length());
            if (v.isEmpty()) {
                result = Type.INVALID;
            } else if (v.startsWith(FXMLLoader.RESOURCE_KEY_PREFIX)) {
                // The prefix was escaped
                result = Type.PLAIN_STRING;
            } else {
                result = Type.RESOURCE_KEY;
            }
        } else if (v.startsWith(FXMLLoader.BINDING_EXPRESSION_PREFIX)) {
            v = v.substring(FXMLLoader.BINDING_EXPRESSION_PREFIX.length());
            if (v.isEmpty() || !v.endsWith(FXMLLoader.BINDING_EXPRESSION_SUFFIX)) {
                result = Type.INVALID;
            } else {
                result = Type.BINDING_EXPRESSION;
            }
        } else if (v.startsWith(FXMLLoader.EXPRESSION_PREFIX)) {
            v = v.substring(FXMLLoader.EXPRESSION_PREFIX.length());
            if (v.isEmpty()) {
                result = Type.INVALID;
            } else if (v.startsWith(FXMLLoader.EXPRESSION_PREFIX)) {
                // The prefix was escaped
                result = Type.PLAIN_STRING;
            } else {
                result = Type.EXPRESSION;
            }
        } else {
            result = Type.PLAIN_STRING;
        }

        return result;
    }