public static tryParse()

in lib/object-provider.ts [48:79]


    public static tryParse(input: string): { success: boolean, uri: Uri } {
        // Syntax: <protocol>:/<path>[?<param1>=<value1>[&<param2>=<value2>]*]
        let start = 0;
        let end = input.indexOf(":/");
        if (end <= 0) {
            return { success: false, uri: null };
        }
        let uri = new Uri();
        uri.protocol = input.substring(start, end);

        // Find path.
        let path = "";
        start = end + 2;
        end = input.indexOf("?", start);
        if (end == -1) {
            // No parameters.
            uri.path = input.substring(start);
        }
        else {
            // Has parameters.
            uri.path = input.substring(start, end);
            let kvStrings = input.substring(end + 1).split('&');
            for (let i = 0; i < kvStrings.length; ++i) {
                let cols = kvStrings[i].split('=');
                if (cols.length != 2) {
                    return { success: false, uri: null };
                }
                uri.setParameter(cols[0], cols[1]);
            }
        }
        return { success: true, uri: uri };
    }