вторник, 22 декабря 2009 г.

colorize

Для подсветки кода сейчас для Common Lisp есть пакет colorize, который не обновлялся с 2004-года (но svn-сервер с ним работает исправно, хе, но там только один коммит). С другой стороны, есть приложение lisppaste, которое включает в себя colorize, обращаю внимание, что не использует, а именно включает, т.е. оба этих пакета имеют общий набор файлов. Вообще, ситуация довольно дикая, я не стал вникать в историю (если она даже где-то описана), но подобный подход разработчиков представляется мне довольно безответственным. Так вот, в lisppaste в данный момент поддерживает несколько больший набор языков, чем colorize (сам выбор этих языков представляется мне довольно странным, здесь можно опять порассуждать о безответственности). А ведь, этот функционал является довольно важным, если вы хотите разрабатывать на Common Lisp приложения типа форума, вики, pastebin и т.п.

В общем, я взял colorize, взял изменения из lisppaste, и создал отдельный репозиторий: http://github.com/archimag/colorize. Желающие добавить поддержку новых языков могут слать мне патчи :)

Да, есть один нюанс. Для правильного форматирования кода на Common Lisp пакету требуется установленный HyperSpec. В оригинальном коде он ищётся в домашнем каталоге, но меня такой подход не впечатлил. Я сделал как в Gentoo, где HyperSpec размещается в каталоге #P"/usr/share/doc/hyperspec-7.0/HyperSpec/" - если у вас он находитсья в другом месте, то необходимо открыть файл clhs-lookup.lisp и изменить в нём значение *hyperspec-pathname*.

P.S. Проделав всё это захотел проверить как colorize будет обрабатывать код на теперь поддерживаемых Erlang или Haskell. Думаю, где же искать этот код, если не на Russian Lambda Planet? - пошёл туда, ага, как же. На Russian Lambda Planet есть всякие забавные фотки (кошечки или там разные предметы мебели), есть разная болтовня про мотоциклы, или даже я видел про баб, есть немного словоблудия про ФП в основном в виде ссылок с восторженными комментариями, но там совершенно нет кода на функциональных языках. Нет, справедливости ради, должен заметить, что иногда там всё таки бывает код на Erlang или Haskell (когда-то я там его видел), но кажется что кода на C или Java там значительно больше. Я думаю, что редакция журнала "Практика функционального программирования" несколько погорячилась с этим конкурсом - если какие решения и появятся, то скорей всего это будет Java или PHP :), уж очень не верится, что люди, столько неохотно пишущие код, сподобятся написать что-либо более-менее серьёзное... тем более, столь бесполезное для большинства...

5 комментариев:

  1. а зачем постить код в блоге? обычно делают ссылку на репозиторий...

    ОтветитьУдалить
  2. @Alex Ott
    О, ссылку на репозиторий с Haskell или Erlang кодом, в разработке которого участвует автор на Russian Lambda Planet я помню только одну, плохо смотрел?
    Но только я всё равно думаю, что в блогах о программировании код должен быть. А то языком почесать у нас все любят. Там же блогов чуть ли не сотня подключена, а кода нет, прячут?

    ОтветитьУдалить
  3. Подсветка синтаксиса не нужна!

    ОтветитьУдалить
  4. @anonymous
    Ну, colorize полезна даже и для дальтоников, ибо умеет вставлять ссылки на документацию, или документация тоже не нужна?

    ОтветитьУдалить
  5. Читаемый код - лучшая документация!

    ОтветитьУдалить