Короткий пример ниже показывает, как comby упрощает сопоставление и перезапись по сравнению с подходами с использованием регулярных выражений, такими как sed
.
brew install comby
bash <(curl -sL get-comby.netlify.app)
Другие дистрибутивы Linux : Библиотека PCRE динамически скомпонована в двоичном файле Ubuntu. Для других дистрибутивов, таких как Arch Linux, необходимо исправление: sudo ln -s /usr/lib/libpcre.so /usr/lib/libpcre.so.3
. В Fedora используйте sudo ln -s /usr/lib64/libpcre.so /usr/lib64/libpcre.so.3
. В качестве альтернативы рассмотрите возможность сборки из исходного кода.
bash <(curl -sL get.comby.dev)
docker pull comby/comby
Запуск с докером на stdin
:
docker run -a stdin -a stdout -a stderr -i comby/comby ' (:[emoji] hi) ' ' bye :[emoji] ' lisp -stdin <<< ' ( hi) '
Иногда да. Но зачастую небольшие изменения и рефакторинг усложняются вложенными выражениями, комментариями или строками. Рассмотрим следующий фрагмент кода в стиле C. Допустим, задача состоит в том, чтобы переписать два условия if
на значение 1
. Можете ли вы написать регулярное выражение, которое соответствует содержимому двух выражений условия if и только этих двух? Не стесняйтесь поделиться своим узором с @rvtond в Твиттере.
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 ;
Чтобы сопоставить их с comby, все, что вам нужно, это написать if (:[condition])
и указать один флаг, что этот язык C-подобен. Замена производится if (1)
. Посмотрите живой пример.
Установите опам. TL;DR do sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh)
Запустите это, если у вас не установлен OCaml (он загружает компилятор OCaml):
opam init
opam switch create 4.11.0 4.11.0
Запустите eval $(opam env)
Установите зависимости ОС:
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
Затем установите зависимости библиотеки:
git clone https://github.com/comby-tools/comby
cd comby
opam install . --deps-only
make
make test
comby
на свой PATH
, запустив make install