#!/bin/sh

# title: soz
# license: CC0
# author: Sunur Efe Vural <efe@efe.kim>
# version: Dec 13, 2018
# dependencies: sdcv, w3m, hexdump, cat...

# Wrapper dictionary script for stardict (using sdcv) and web
# dictionaries (using w3m). Add dictionaries to the case statement.

defineWord() {
	if [ -z "$1" ] ; then
		read -rp 'Enter word or phrase: ' word
	else word="$1"
	fi
}

interactiveMode() {
	[ -z "$1" ] && $0 "$dict"
}

queryDict() {
	defineWord "$2"
	word=$(echo "$word" | hexdump -v -e '/1 " %02x"' | sed 's/ 0a$//')
	site=$(echo "$1" | sed "s/\%s/$word/;y/ /%/")
	w3m -o display_link_number=0 "$site" | cat
	interactiveMode "$2"
}

sdcvDict() {
	defineWord "$2"
	sdcv -n -u "$1" "$word"
	interactiveMode "$2"
}

dict=$1
shift

case $dict in
	tr)     queryDict "https://tr.wiktionary.org/w/index.php?search=%s&title=%D6zel%3AAra" "$*" ;;
	azen)   queryDict "https://azerdict.com/az/english/%s"                                 "$*" ;;
	tren)   queryDict "http://www.zargan.com/tr/q/%s-ceviri-nedir"                         "$*" ;;
	en)     sdcvDict  "WordNet® 3.0 (En-En)"                                               "$*" ;;
	fren)   sdcvDict  "French - English"                                                   "$*" ;; 
	ruen)   sdcvDict  "Russian-English full dictionary"                                    "$*" ;;
	*) printf "No dictionary as %s found.\nusage: soz dictname [search term]\n" "$dict"         ;;
esac
