30 ноября 2014 г.

Guile-DSV 0.1.0

Доброго времени суток.

Потребовалась мне как-то раз GNU Guile библиотека для работы с форматом DSV (delimiter-separated values). Когда это случилось в первый раз (в awget), то готового решения найти не удалось, и я написал решение "по месту", специально для проекта. Когда подобная библиотека потребовалась во второй раз (в cadrobot), то я скопировал код готового модуля из awget. В третий раз, когда разбор DSV потребовался для внутреннего проекта в компании Элсис (где я сейчас работаю), было опять скопировано существующее решение из ранних проектов.

Один из недостатков подобного подхода в том, что при нахождении ошибки в одной из реализаций приходится вручную исправлять подобную же ошибку в других проектах. Другой недостаток в том, что если проблема разбора DSV возникнет у другого разработчика, то ему придётся копировать мою реализацию в свой проект (если, конечно, он вообще сможет найти мою реализацию). Поэтому, после третьего подобного случая копипаста у меня возникло непреодолимое желание создать свою библиотеку для работы с форматом DSV, которую уже использовать. Что я и сделал.

Сегодня выпустил релиз Guile-DSV 0.1.0 -- первую версию библиотеки. Она довольно простая, и на данный момент поддерживает только Unix-стиль формата DSV, который описан Эриком Реймондом в книге "The Art of Unix Programming".

Кроме процедур для конвертации между DSV-строками и списками, и процедурами чтения/записи DSV, Guile-DSV предоставляет процедуру guess-delimiter для автоматического определения разделителя полей, которую я подсмотрел в python-dsv.

Guile-DSV распространяется на условиях лицензии GNU GPLv3+. Для процедур, предоставляемых библиотекой, написаны тесты. Библиотека ставится "классическим" способом через ./configure && make && make install, и снабжена документацией в Info формате, которая ставится вместе с GNU Guile модулем. В документации приведены примеры использования каждой из процедур.

Надеюсь, что данная библиотека будет полезна не только мне. Буду рад конструктивным комментариям по поводу библиотеки, а ещё более буду рад отчётам об ошибках (если таковые будут) и патчам для их исправления.

Спасибо,

- Артём