des

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