48 lines
1.5 KiB
Plaintext
48 lines
1.5 KiB
Plaintext
|
#!/usr/bin/env bash
|
||
|
|
||
|
function parseResults() {
|
||
|
oIFS=$IFS
|
||
|
IFS=":"
|
||
|
declare -a fields=($1)
|
||
|
|
||
|
export QUERYTERM=$(echo "${fields[0]}"|awk '{print $1}');
|
||
|
export LISTCOUNT=$(echo "${fields[0]}"|awk '{print $2}');
|
||
|
export WORDLIST=$(echo "${fields[1]}"|sed 's/^\s*\|\s*$//g');
|
||
|
|
||
|
IFS=$oIFS
|
||
|
unset oIFS
|
||
|
}
|
||
|
|
||
|
searchterm=$(zenity --entry --text="Enter search term:" --title="Speller" --width=300 --height=40 2> /dev/null);
|
||
|
|
||
|
if [ -z "${searchterm}" ] | [ "${searchterm}" == " " ]; then
|
||
|
zenity --info --text="<b>ERROR</b> No search term provided!"\
|
||
|
--icon-name=error \
|
||
|
--window-icon="${HOME}/.local/bin/img/xmark.png" 2> /dev/null
|
||
|
exit 1;
|
||
|
fi
|
||
|
|
||
|
if [[ "${searchterm}" =~ ^[0-9]+$ ]]; then
|
||
|
zenity --info --text="<b>ERROR</b> only words, please!"\
|
||
|
--icon-name=error \
|
||
|
--window-icon="${HOME}/.local/bin/img/xmark.png" 2> /dev/null
|
||
|
exit 1;
|
||
|
fi
|
||
|
|
||
|
export RESULT=$(echo "$searchterm"|aspell -a|sed "1 d"); # Deletes the header line
|
||
|
export FIXED="${RESULT/& }" # Removes ampersand causing parsing errors.
|
||
|
|
||
|
if [[ "${FIXED}" == *"*"* ]]; then
|
||
|
zenity --info --text="<b>CORRECT!</b> " \
|
||
|
--icon-name=info \
|
||
|
--window-icon="${HOME}/.local/bin/img/check-mark-11-16.png" 2> /dev/null
|
||
|
|
||
|
else
|
||
|
parseResults "${FIXED}"
|
||
|
message="<b>There are ${LISTCOUNT} suggested corrections for '${QUERYTERM}':</b> ${WORDLIST}"
|
||
|
zenity --info --text="${message}"\
|
||
|
--icon-name=warning \
|
||
|
--window-icon="${HOME}/.local/bin/img/caution-48.png" 2> /dev/null
|
||
|
|
||
|
fi
|