#! /bin/sh
# usage: dic [--lang=LANG] WORD...
# where LANG may be one of en, fr, es, it, ch, ru, pt, pl
set -euf
main() {
_args=$(getopt -n "$0" -s sh \
-o l: \
-l lang: \
-- "$@")
if \test $? != 0; then exit 1; fi
eval set -- "$_args"
unset _args
lang=en
while :; do case $1 in
-l|--lang) lang=$2; shift 2;;
--) shift; break;;
esac; done
search=$*
lp=${lang}de
GET | simplify | tac
}
GET() {
curl -GsS \
-b 'LEOABTEST=T; browser=webkit%3B5%3Bajax' \
--data-urlencode lang="$lang" \
--data-urlencode lp="$lp" \
--data-urlencode multiwordShowSingle=on \
--data-urlencode resultOrder=basic \
--data-urlencode rmSearch=on \
--data-urlencode rmWords=off \
--data-urlencode searchLoc=0 \
--data-urlencode search="$search" \
--data-urlencode tolerMode=nof \
"https://dict.leo.org/dictQuery/m-vocab/$lp/query.xml"
}
simplify() {
sed '
s|]*\)>|\nREPR: |g
s||\n|g
' | grep ^REPR |
sed '
s/^REPR: //
1~2{s/$//}
2~2{s/$//}
' |
tr -d \\n |
sed '
s// [38;5;237m-[m /g
s//\n/g
s|\?m\>[^>]*>||g
s|\?sr\>[^>]*>||g
s|\?t\>[^>]*>||g
#q
s/⇔/⇔/g
s/ / /g; #
s/®/®/g;
s/ */ /g
#
s/ *//g
s| *|/|g
s| *|/|g
s:1:¹:g; s:2:²:g; s:3:³:g;
s::^(:g
s::):g
s:0:₀:g;
s:1:₁:g; s:2:₂:g; s:3:₃:g;
s:4:₄:g; s:5:₅:g; s:6:₆:g;
s:7:₇:g; s:8:₈:g; s:9:₉:g;
s::_(:g
s::):g
s: *:[;4m:g
s: *:[m:g
s| *||g
s| *||g
s| *|[38;5;238m|g
s| *|[m|g
# "Verbtabelle" and plural
s: *:[38;5;248m:g
s: *:[m:g
s:
:\n:g
'
}
usage() {
sed -rn '/^# usage:/,/^[^#]/{/^#/{s/# //;p}}' "$0" >&2
}
main "$@"