# shellcheck shell=dash

___x_cmd_proxy___str_load_(){
    x_=
    local ret_=
    local str="$1"

    while read -r line; do
        [ -n "$line" ] || break
        data="${line#*:}"
        data="${line%% #*}"
        ___x_cmd_shq1_ "$data"
        # quote the data ...
        case "$line" in
            http:*)     ret_="$ret_ --http ${line#http: }"    ;;
            https:*)    ret_="$ret_ --https ${line#https: }"  ;;
            httpx:*)    ret_="$ret_ --httpx ${line#httpx: }"  ;;
            all:*)      ret_="$ret_ --all ${line#all: }"      ;;
            ftp:*)      ret_="$ret_ --ftp ${line#ftp: }"      ;;
            adapt:*)    ret_="$ret_ --adapt ${line#adapt: }"  ;;
            *)          proxy:warn "Unknown line $line" ;;
        esac
    done <<A
$str
A

    x_="$ret_"
}

# example:
#   ___x_cmd_proxy___str_dump_ --http http://127.0.0.1:8234 --https http://127.0.0.1:8234 --all socks5://127.0.0.1:8235
#   ___x_cmd_proxy___str_dump_ http://127.0.0.1:8234
___x_cmd_proxy___str_dump_(){
    x_=""
    while [ $# -gt 0 ]; do
        case "$1" in
            --http|http)        x_="${x_}http: $2${___X_CMD_UNSEENCHAR_NEWLINE}"  ;;
            --https|https)      x_="${x_}https: $2${___X_CMD_UNSEENCHAR_NEWLINE}" ;;
            --httpx|httpx)      x_="${x_}httpx: $2${___X_CMD_UNSEENCHAR_NEWLINE}" ;;
            --ftp|ftp)          x_="${x_}ftp: $2${___X_CMD_UNSEENCHAR_NEWLINE}"   ;;
            --all|all)          x_="${x_}all: $2${___X_CMD_UNSEENCHAR_NEWLINE}"   ;;
            *)                  x_="${x_}adapt: $1${___X_CMD_UNSEENCHAR_NEWLINE}" 
                                break ;;
        esac
        shift 2
    done
}
