Un court exemple ci-dessous montre comment comby simplifie la correspondance et la réécriture par rapport aux approches regex comme sed
.
brew install comby
bash <(curl -sL get-comby.netlify.app)
Autres distributions Linux : La bibliothèque PCRE est liée dynamiquement dans le binaire Ubuntu. Pour d'autres distributions comme Arch Linux, une correction est nécessaire : sudo ln -s /usr/lib/libpcre.so /usr/lib/libpcre.so.3
. Sur Fedora, utilisez sudo ln -s /usr/lib64/libpcre.so /usr/lib64/libpcre.so.3
. Vous pouvez également envisager de construire à partir des sources.
bash <(curl -sL get.comby.dev)
docker pull comby/comby
Exécuter avec docker sur stdin
:
docker run -a stdin -a stdout -a stderr -i comby/comby ' (:[emoji] hi) ' ' bye :[emoji] ' lisp -stdin <<< ' ( hi) '
Parfois, oui. Mais souvent, les petites modifications et refactorisations sont compliquées par des expressions, des commentaires ou des chaînes imbriquées. Considérez l'extrait de code suivant de type C. Supposons que le défi soit de réécrire les deux conditions if
à la valeur 1
. Pouvez-vous écrire une expression régulière qui correspond au contenu des deux expressions de condition if, et uniquement de ces deux-là ? N'hésitez pas à partager votre modèle avec @rvtond sur Twitter.
if ( fgets ( line , 128 , file_pointer ) == Null ) // 1) if (...) returns 0
return 0 ;
...
if ( scanf ( "%d) %d" , & x , & y ) == 2 ) // 2) if (scanf("%d) %d", &x, &y) == 2) returns 0
return 0 ;
Pour les faire correspondre avec comby, il vous suffit d'écrire if (:[condition])
et de spécifier un indicateur indiquant que ce langage est de type C. Le remplacement est if (1)
. Voir l'exemple en direct.
Installez opam. TL;DR do sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)
Exécutez ceci si OCaml n'est pas installé (il démarre le compilateur OCaml) :
opam init
opam switch create 4.11.0 4.11.0
Exécutez eval $(opam env)
Installer les dépendances du système d'exploitation :
Linux : sudo apt-get install autoconf libpcre3-dev pkg-config zlib1g-dev m4 libgmp-dev libev4 libsqlite3-dev
Mac : brew install pkg-config gmp pcre libev
Installez ensuite les dépendances de la bibliothèque :
git clone https://github.com/comby-tools/comby
cd comby
opam install . --deps-only
make
make test
comby
sur votre PATH
en exécutant make install