Um pequeno exemplo abaixo mostra como comby simplifica a correspondência e a reescrita em comparação com abordagens regex como sed
.
brew install comby
bash <(curl -sL get-comby.netlify.app)
Outras distribuições Linux : A biblioteca PCRE está vinculada dinamicamente no binário do Ubuntu. Para outras distribuições como Arch Linux, é necessária uma correção: sudo ln -s /usr/lib/libpcre.so /usr/lib/libpcre.so.3
. No Fedora, use sudo ln -s /usr/lib64/libpcre.so /usr/lib64/libpcre.so.3
. Alternativamente, considere construir a partir da fonte.
bash <(curl -sL get.comby.dev)
docker pull comby/comby
Executando com docker em stdin
:
docker run -a stdin -a stdout -a stderr -i comby/comby ' (:[emoji] hi) ' ' bye :[emoji] ' lisp -stdin <<< ' ( hi) '
Às vezes, sim. Mas muitas vezes, pequenas alterações e refatorações são complicadas por expressões, comentários ou strings aninhados. Considere o seguinte trecho semelhante a C. Digamos que o desafio seja reescrever as duas condições if
para o valor 1
. Você pode escrever uma expressão regular que corresponda ao conteúdo das duas expressões de condição if, e apenas dessas duas? Sinta-se à vontade para compartilhar seu padrão com @rvtond no 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 ;
Para combiná-los com comby, tudo que você precisa escrever é if (:[condition])
e especificar um sinalizador de que esta linguagem é semelhante a C. A substituição é if (1)
. Veja o exemplo ao vivo.
Instale o opam. DR do sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)
Execute isto se você não tiver o OCaml instalado (ele inicializa o compilador OCaml):
opam init
opam switch create 4.11.0 4.11.0
Execute eval $(opam env)
Instale as dependências do sistema operacional:
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
Em seguida, instale as dependências da biblioteca:
git clone https://github.com/comby-tools/comby
cd comby
opam install . --deps-only
make
make test
comby
em seu PATH
executando make install