
# castract %c% '' %b%
# V=
# V=v.1.1
# ___x_cmd_caxt v12.1.3     v %c1 . %c2 . %c3

___x_cmd_caxt(){
    local data="$1"; shift
    local elem
    local var
    while [ "$#" -gt 2 ]; do
        case "$1" in
            %*) var="${1#%}"
                elem="${data%%$2*}"
                [ "$elem" != "$data" ] || return 1
                eval "$var=\"\$elem\""
                data="${data#"$elem"$2}"
                shift 2
                ;;

            *)  elem="${data#$1}";
                [ "$elem" != "$data" ] || return 1
                data="$elem"
                shift
                ;;
        esac
    done

    if [ "$#" -eq 1 ]; then
        case "$1" in
            %*) var="${1#%}"
                eval "$var=\"\$data\""
        esac
    fi
}
