# shellcheck shell=dash

___x_cmd_wkp_extract(){
    [ "$#" -gt 0 ] ||  N=wkp M="Please provide a value for the query" log:ret:64
    local title
    local datamode=app;

    local IFS=" "
    while [ "$#" -gt 0 ]; do
        case "$1" in
            -h|--help)      ___x_cmd help -m wkp extract "$@";  return ;;
            -j|--json)      datamode="json" ;                    shift ;;
            -y|--yml)       datamode="yml"  ;                    shift ;;
            --app)          datamode="app"  ;                    shift ;;

            --)             shift ;                  title="$*"; break ;;
            *)                                       title="$*"; break ;;
        esac
    done

    [ -n "$title" ] || N=wkp M="Please provide a value for the query" log:ret:64
    ___x_cmd_wkp_extract___"$datamode" "$title"
    # TODO:
    # x wkp extract Perplexity.ai  | x y2j | x jq -r '.query.pages."75743156".extract' | x bat -l wiki
}

___x_cmd_wkp_extract___app(){
    local x_
    ___x_cmd_wkp_extract___txt_ "$@" || return

    if ___x_cmd_is_stdout2tty; then
        printf "%s\n" "$x_" | ___x_cmd bat -l wiki
    else
        printf "%s\n" "$x_"
    fi
}

# default
___x_cmd_wkp_extract___txt_(){
    local title="$1"
    local data
    data="$(___x_cmd_wkp_query_extract --title "$title" | ___x_cmd jo .query.pages."*")"

    local pageid
    local extract
    ___x_cmd jo env . title=.title pageid=.pageid extract=.extract <<A
$data
A
    [ -n "$extract" ] || N=wkp M="not found extract of [title='$title']"  log:ret:1

    x_="$(printf "%s\n" "
---
title: $title
pageid: $pageid
---

$extract
")"
}

___x_cmd_wkp_extract___yml(){
    ___x_cmd_wkp_query_extract --title "$title" | ___x_cmd j2y
}

___x_cmd_wkp_extract___json(){
    ___x_cmd_wkp_query_extract --title "$title"
}
