#!/bin/bash
DB_PATH="/usr/share/ibus-table/tables/cangjie3.db"

# 建立字根映射表
declare -A mapping=(
    [a]="日" [b]="月" [c]="金" [d]="木" [e]="水" [f]="火" [g]="土"
    [h]="竹" [i]="戈" [j]="十" [k]="大" [l]="中" [m]="一" [n]="弓"
    [o]="人" [p]="心" [q]="手" [r]="口" [s]="尸" [t]="廿" [u]="山"
    [v]="女" [w]="田" [y]="卜" [x]="難" [z]="重"
)

translate_code() {
    local code=$1
    local result=""
    for (( i=0; i<${#code}; i++ )); do
        local key="${code:$i:1}"
        result="${result}${mapping[$key]}"
    done
    echo "$result"
}


if [ ! -f $DB_PATH ] ; then
    echo "找不到倉頡字典檔 $DB_PATH"
    echo "請安裝 ibus-table-chinese-cangjie 套件"
    exit 1
fi

if ! which sqlite3 > /dev/null 2>&1 ; then
    echo "請安裝 sqlite 套件"
    exit 1
fi

query_word=$1
if [ -z "$query_word" ]; then
    echo "用法: `basename $0` [文字]"
    exit 1
fi

echo "$query_word"
echo

# 支援多字輸入
echo "$query_word" | grep -o . | while read -r char; do
    raw_keys=$(sqlite3 "$DB_PATH" "SELECT DISTINCT tabkeys FROM phrases WHERE phrase='$char';" 2>/dev/null)
    
    if [ -z "$raw_keys" ]; then
        echo "$char : 找不到字碼"
    else
        for k in $raw_keys; do
            root=$(translate_code "$k")
            printf "%s : %-10s (%s)\n" "$char" "$root" "$k"
        done
    fi
done
