

xrc:mod:lib     ccal        fz/fzd fz/fzm fz/fzy

___X_CMD_CCAL_FZ_DATE=""

___x_cmd_ccal_fz(){
    ___x_cmd_ccal_fzd "$@"
}

___x_cmd_ccal_fz___info(){
    # ccal:info   \
    #     --hint0 "To Exit: [ctrl-c] or [ctrl-d] or ESC" \
    #     --hint1 "Goback: TAB"              \
    #     --hint2 "Change preview: [ctlr-r]"          \
    #     --hint3 "Reset: [ctlr-t]"                   \
    #     "Useful shortcuts"

    local ks="\033[0;36m"
    local vs="\033[0;2m"
    local nu="\033[0m"

    printf "  ${ks}%-10s ${vs}%-14s"   "[TAB] or [shift-TAB]"          "切换视图"
    printf "  ${ks}%-10s ${vs}%-16s"   "[ENTER]"        "选中"
    printf "\n"
    printf "  ${ks}%-10s ${vs}%-20s"   "[ctlr-t]"       "重设为今天 $(___x_cmd_cmds date +%Y-%m-%d)"
    printf "     ${ks}%-10s ${vs}%-16s"   "[ctlr-r]"    "改变预览窗口大小"
    printf "\n"
    # printf "  ${ks}%-10s ${vs}%s"       "[ctrl-s]"      "[日视图] 切换显示模式：全部日期/仅当月" # "Switch between Partial or MODE in Day View"
    # printf "\n"
    printf "  ${ks}%-20s ${vs}%s" "[ctrl-c] or [ctrl-d] or [ESC]"  "退出"

    printf "       ${ks}%-13s ${vs}%s" "[shift-alt-  ⬆️  / ⬇️  / ⬅️  / ➡️  ] "
    printf "${nu}\n"
}

___x_cmd_ccal_fz___date_(){
    local date="$1"

    # [ -n "$date" ] || date="$___X_CMD_CCAL_FZ_DATE"
    [ -n "$date" ] || date=today

    ___X_CMD_CCAL_FZ_DATE_TODAY="$(___x_cmd_cmds date +%Y-%m-%d)"

    ___X_CMD_CCAL_FZ_DATE_TODAY_Y="${___X_CMD_CCAL_FZ_DATE_TODAY%%-*}"
    ___X_CMD_CCAL_FZ_DATE_TODAY_D="${___X_CMD_CCAL_FZ_DATE_TODAY##*-}"
    ___X_CMD_CCAL_FZ_DATE_TODAY_M="${___X_CMD_CCAL_FZ_DATE_TODAY#*-}"; ___X_CMD_CCAL_FZ_DATE_TODAY_M="${___X_CMD_CCAL_FZ_DATE_TODAY_M%-*}"

    case "$date" in
        t|today)    date="$___X_CMD_CCAL_FZ_DATE_TODAY" ;;
        *-*-*)      ;;
        */*/*)      ;;
        *-*)        date="$date-1" ;;
        */*)        date="$date/1" ;;

        *)          date="$date-1-1" ;;
                    # N=ccal M="Invalid date time -> $date" log:ret:64 ;;
    esac

    case "$date" in
        *-*-*)
            ___X_CMD_CCAL_FZ_DATE_Y="${date%%-*}"
            ___X_CMD_CCAL_FZ_DATE_D="${date##*-}"

            ___X_CMD_CCAL_FZ_DATE_M="${date#*-}"
            ___X_CMD_CCAL_FZ_DATE_M="${___X_CMD_CCAL_FZ_DATE_M%-*}"

            ___X_CMD_CCAL_FZ_DATE="$date"
            ;;

        */*/*)
            ___X_CMD_CCAL_FZ_DATE_Y="${date%%/*}"
            ___X_CMD_CCAL_FZ_DATE_D="${date##*/}"

            ___X_CMD_CCAL_FZ_DATE_M="${date#*/}"
            ___X_CMD_CCAL_FZ_DATE_M="${___X_CMD_CCAL_FZ_DATE_M%/*}"

            ___X_CMD_CCAL_FZ_DATE="$___X_CMD_CCAL_FZ_DATE_Y-$___X_CMD_CCAL_FZ_DATE_M-$___X_CMD_CCAL_FZ_DATE_D"
            ;;
    esac

    ___X_CMD_CCAL_FZ_RESULT="$___X_CMD_CCAL_FZ_DATE"
}

___x_cmd_ccal_fz___read_date_(){
    local line
    {
        read -r line
        read -r x_
    } <<A
$1
A

    [ -n "$x_" ] || x_="$line"
    x_="${x_%%"$___X_CMD_UNSEENCHAR_HT"*}"
    x_="${x_%%" "*}"

}
