
# Using list
# ___x_cmd_jo '1.*' -- [ .abc, .cde, .aaa
# Using dict
# ___x_cmd_jo '1.*' -- { .abc, .cde, .aaa
# Using print
# ___x_cmd_jo '1.*' -- abc cde aaa

# Using env
# ___x_cmd_jo env_code '1.*' key score name

xrc mline

___x_cmd_jo_env(){
    case "$#" in
        0)      ___x_cmd log :jo error "jo env need at least one argument and first argument"; return 1 ;;
        1)      ____x_cmd_jo_env_main . "$1" ;;
        *)      ____x_cmd_jo_env_main "$@" ;;
    esac
}

# TODO: for optimization
____x_cmd_jo_env_main(){
    local pat="$1"
    local argstr="$2"
    shift 2
    while [ $# -gt 0 ]; do
        case "$1" in
            --)     shift; break ;;
            *)      argstr="${argstr}${___X_CMD_UNSEENCHAR_001}${1}"; shift ;;
        esac
    done

    local ___X_CMD_QUERY_AWK_IMPL="env.impl.awk"
    local ___X_CMD_JO_QUERY_JSTR="q1"
    if [ $# -eq 0 ]; then
        eval "$(____x_cmd_jo_query_main "$pat" "$argstr")"
    else
        local ____x_cmd_jo_env_main_line_tmpvar___19491001
        local ___X_CMD_JO_ENV_MULTIPLELINE_SEP="\\n$___X_CMD_MULTIPLELINE_SEP\\n"
        ____x_cmd_jo_query_main "$pat" "$argstr" |\
        while  ___x_cmd mline read ____x_cmd_jo_env_main_line_tmpvar___19491001; do
            eval "$____x_cmd_jo_env_main_line_tmpvar___19491001"
            ___x_cmd_evex "$@"
        done
    fi

}

# data | { jo env . .a .b; : handle a b; }
# data | jo query . .a .b | while x rl a b; do :; done
# data | jo env . .a .b -- handle something
