NameValuePair.java 3.87 KB
/*
 * Decompiled with CFR 0_118.
 */
package com.day.util;

public class NameValuePair {
    private final String name;
    private final String value;

    public NameValuePair(String name, String value) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return this.name;
    }

    public String getValue() {
        return this.value;
    }

    public static NameValuePair parse(String str) {
        return NameValuePair.parse(str, '=');
    }

    public static NameValuePair parse(String str, char equal) {
        int state = 0;
        int lastState = 0;
        int nameStart = 0;
        int nameEnd = 0;
        StringBuffer value = new StringBuffer();
        block10 : for (int i = 0; i < str.length(); ++i) {
            char c = str.charAt(i);
            switch (state) {
                case 0: {
                    if (Character.isWhitespace(c)) continue block10;
                    nameStart = i;
                    state = 1;
                    continue block10;
                }
                case 1: {
                    if (c == equal) {
                        nameEnd = i;
                        state = 3;
                        continue block10;
                    }
                    if (!Character.isWhitespace(c)) continue block10;
                    nameEnd = i;
                    state = 2;
                    continue block10;
                }
                case 2: {
                    if (c != equal) continue block10;
                    state = 3;
                    continue block10;
                }
                case 3: {
                    if (c == '\"') {
                        state = 4;
                        continue block10;
                    }
                    if (c == '\'') {
                        state = 5;
                        continue block10;
                    }
                    if (Character.isWhitespace(c)) continue block10;
                    value.append(c);
                    state = 6;
                    continue block10;
                }
                case 4: {
                    if (c == '\"') {
                        state = 6;
                        continue block10;
                    }
                    if (c == '\\') {
                        lastState = state;
                        state = 7;
                        continue block10;
                    }
                    value.append(c);
                    continue block10;
                }
                case 5: {
                    if (c == '\'') {
                        state = 6;
                        continue block10;
                    }
                    if (c == '\\') {
                        lastState = state;
                        state = 7;
                        continue block10;
                    }
                    value.append(c);
                    continue block10;
                }
                case 6: {
                    if (c == '\'') {
                        state = 5;
                        continue block10;
                    }
                    if (c == '\"') {
                        state = 4;
                        continue block10;
                    }
                    if (c == '\\') {
                        lastState = state;
                        state = 7;
                        continue block10;
                    }
                    if (Character.isWhitespace(c)) continue block10;
                    value.append(c);
                    continue block10;
                }
                case 7: {
                    value.append(c);
                    state = lastState;
                }
            }
        }
        if (nameEnd == 0) {
            return new NameValuePair(str.substring(nameStart), "");
        }
        return new NameValuePair(str.substring(nameStart, nameEnd), value.toString());
    }
}