Un outil pour récupérer les synonymes d'un mot de la langue française - retour accueil
git clone git://bebou.netlib.re/des
Log | Files | Refs | README |
des (2067B)
1 #! /bin/sh 2 3 set -e 4 5 # TOREMOVE 6 if grep -q "^# TOREMOVE$" "$0";then 7 printf "Voulez vous utiliser cet outil en ligne ou hors ligne ?\n" 8 printf "Pour voir les avantages et désavantages de chaque mode lisez le README :)\n" 9 if command -V fzy > /dev/null ;then 10 mode=$(printf "En ligne\nHors ligne\nquitter\n" | fzy) 11 else 12 printf "En ligne - 1\nHors ligne - 2\nquitter - 3\n" 13 read answer 14 case "$answer" in 15 1) mode="En ligne";; 16 2) mode="Hors ligne";; 17 *) mode=;; 18 esac 19 fi 20 case $mode in 21 ('En ligne') mode="online";; 22 ('Hors ligne') 23 [ ! -f "synonymes.tsv" ] && curl -Ls http://arthur.bebou.netlib.re/crisco-des/data > synonymes.tsv 24 mode="offline" 25 path="$(pwd)/synonymes.tsv";; 26 (*) printf "On ne fait rien\n"; exit 0;; 27 esac 28 < "$0" sed "/^# TOREMOVE$/,/^# TOREMOVE$/ d 29 /^# PATH/ s.*path=$path 30 /^# MODE/ s/.*/mode=$mode/" > .tmp 31 mv .tmp des; chmod +x des 32 fi 33 # TOREMOVE 34 35 # MODE 36 # PATH 37 38 usage() { 39 cat <<. 40 Affiche les synonymes d'un mot de la langue française. Les données proviennent 41 du DES du CRISCO. 42 43 Usage : des [-h] [-d] [mot] 44 45 Arguments : 46 47 * -h : Imprime cette aide 48 * -d : Fonctionnement non interactif. Affiche le résultat et ne propose 49 pas de choisir un nouveau mot parmi les résultats. 50 * mot : Le mot dont on veut les synonymes. S'il est absent alors l'outil le 51 demandera lui même. 52 . 53 } 54 55 case "$1" in 56 (-d) dump=yes; shift;; 57 (-h) usage; exit 0;; 58 esac 59 [ "$1" ] && mot="$*" || { printf "Mot : "; read -r mot; } 60 61 while [ -n "$mot" ] 62 do 63 oldmot="$mot" 64 echo "$oldmot" | cut -f1 65 if [ "$mode" = "online" ];then 66 line=$(echo "synonyme $mot" | nc -N bebou.netlib.re 2222 | sed '1d') 67 else 68 line=$(grep "^$mot " "$path" | cut -f2- | tr '; ' ' \n') 69 fi 70 mot=$(echo "$line" | column -ts' ') 71 if command -V fzy > /dev/null && [ ! "$dump" ]; then 72 command -V xclip > /dev/null && printf "%s" "$oldmot" | xclip -selection clipboard 73 mot=$(echo "$mot" | fzy -l 50 | sed -E 's, *[0-9]+,,') 74 else 75 echo "$mot" 76 oldmot=$(echo "$mot" | head -n1 | sed -E 's, *[0-9]+,,') 77 exit 0 78 fi 79 done 80