
___x_cmd_jo_query(){
    ____x_cmd_jo_query_main "$@"
}

# TODO: for optimization
____x_cmd_jo_query_main(){
    local acessor_num
    case "$#" in
        0)      ___x_cmd log :jo error "jo query need at least one argument and first argument"; return 1 ;;
        1)      acessor_num=0 ;;
        *)      acessor_num=n ;;
    esac

    local selector_type
    case "$1" in
        "")             ___x_cmd log :jo error "The first argument should not be empty" ; return 1 ;;
        *.*\*\**)       selector_type=regexpat ;;
        *.*\**)         selector_type=regexarr ;;
        *)              selector_type=eqarr ;;
    esac
    ____x_cmd_jo_query_main_inner "$@"
}

____x_cmd_jo_query_main_inner(){
    local P="$___X_CMD_ROOT_MOD/jo/lib/query_awk"
    {
        local IFS="${___X_CMD_UNSEENCHAR_001}"
        printf "%s\n%s\n" "$*" "---" && ___x_cmd_cmds_cat
    } | ___x_cmd_cmds_awk -v ___X_CMD_JO_QUERY_JSTR="$___X_CMD_JO_QUERY_JSTR" \
            -v ___X_CMD_JO_ENV_MULTIPLELINE_SEP="$___X_CMD_JO_ENV_MULTIPLELINE_SEP" \
            -f "$___X_CMD_ROOT_MOD/awk/lib/core.awk" \
            -f "$___X_CMD_ROOT_MOD/awk/lib/j/json.awk" \
            -f "$___X_CMD_ROOT_MOD/awk/lib/j/jiter.awk" \
            -f "$P/share.awk" \
            -f "$P/${___X_CMD_QUERY_AWK_IMPL:-"impl.awk"}" \
            -f "$P/${selector_type}/share.awk" \
            -f "$P/${selector_type}/${acessor_num}.awk"

}

# ____x_cmd_jo_query_with_eqarr(){
#     local IFS="$___X_CMD_UNSEENCHAR_001"
#     {
#         printf "%s\n%s\n" "$*" "---"
#         cat
#     } | {
#         case "$#" in
#             1)      awkpath="$___X_CMD_ROOT_MOD/jo/lib/query_awk/eqarr.awk" ;;
#             *)      awkpath="$___X_CMD_ROOT_MOD/jo/lib/query_awk/eqarr.all.awk";;
#         esac

#         awk -f "$___X_CMD_ROOT_MOD/awk/lib/default.awk" \
#             -f "$___X_CMD_ROOT_MOD/awk/lib/json.awk" \
#             -f "$___X_CMD_ROOT_MOD/awk/lib/jiter.awk" \
#             -f "$___X_CMD_ROOT_MOD/jo/lib/query_awk/share.awk" \
#             -f "$awkpath"
#     }
# }

# ____x_cmd_jo_query_with_regexarr(){
#     local IFS="$___X_CMD_UNSEENCHAR_001"
#     {
#         printf "%s\n%s\n" "$*" "---"
#         cat
#     } | {
#         case "$#" in
#             1)      awkpath="$___X_CMD_ROOT_MOD/jo/lib/query_awk/regexarr.awk" ;;
#             *)      awkpath="$___X_CMD_ROOT_MOD/jo/lib/query_awk/regexarr.all.awk";;
#         esac

#         awk -f "$___X_CMD_ROOT_MOD/awk/lib/default.awk" \
#             -f "$___X_CMD_ROOT_MOD/awk/lib/json.awk" \
#             -f "$___X_CMD_ROOT_MOD/awk/lib/jiter.awk" \
#             -f "$___X_CMD_ROOT_MOD/jo/lib/query_awk/share.awk" \
#             -f "$awkpath"
#     }
# }

# ____x_cmd_jo_query_with_regexpat(){
#     local IFS="$___X_CMD_UNSEENCHAR_001"
#     {
#         printf "%s\n%s\n" "$*" "---"
#         cat
#     } | {
#         case "$#" in
#             1)      awkpath="$___X_CMD_ROOT_MOD/jo/lib/query_awk/regexpat.awk" ;;
#             *)      awkpath="$___X_CMD_ROOT_MOD/jo/lib/query_awk/regexpat.all.awk";;
#         esac

#         awk -f "$___X_CMD_ROOT_MOD/awk/lib/default.awk" \
#             -f "$___X_CMD_ROOT_MOD/awk/lib/json.awk" \
#             -f "$___X_CMD_ROOT_MOD/awk/lib/jiter.awk" \
#             -f "$___X_CMD_ROOT_MOD/jo/lib/query_awk/share.awk" \
#             -f "$awkpath"
#     }
# }
