воскресенье, 20 декабря 2009 г.

restas-colorize

Закончил отделение кода "форматтера кода" (обычно подобные приложения называют pastebin) от исходного кода lisper.ru и сейчас он доступен как отдельный restas-плагин: restas-colorize. Перевёл lisper.ru на использование этого плагина. Как побочный результат - новая возможность, теперь можно форматировать код не только на Common Lisp, поддерживаются и некоторые другие языки программирования. Планирую в будущем расширить список поддерживаемых языков, но это не имеет отношения к restas-colorize, а только к библиотеке colorize.

Сейчас для настройки плагина можно использовать следующие переменные (из пакета #:restas-colorize):
  • *max-on-page* - при просмотре списка "pastes" определяет максимальное их количество на одной странице
  • *finalize-page* - служит для "встраивания" плагина в сайт, задания общего оформления
  • *colorize-user-function* - плагин не имеет своей системы авторизации, предпочитает использовать внешнюю
  • *storage* - пожалуй самый интересный параметр, в состав плагина входит только хранилище в памяти, которое позволяет хранить "pastes" в памяти только во время выполнения. Для реального сайта необходимо, скорей всего, использовать хранение в базе, но плагин не берётся судить о том, какая структура базы будет оптимальной для всех сайтов, поэтому на стороне сайта необходимо создать объект *storage*, реализующий требуемый протокол и передать в этой переменной в плагин.
На lisper.ru данный плагин сейчас подключается следующим образом:
(restas:define-site-plugin rulisp-format (#:restas.colorize)
(restas.colorize:*baseurl* '("apps" "format"))
(restas.colorize:*max-on-page* 15)
(restas.colorize:*storage* *rulisp-db-storage*)
(restas.colorize:*colorize-user-function* #'compute-user-login-name)
(restas.colorize:*finalize-page* (lambda (content)
(rulisp.view.fine:main-frame (list :title (getf content :title)
:css (css-files-data '("style.css" "colorize.css"))
:user (compute-user-login-name)
:main-menu (main-menu-data)
:content (getf content :content)
:callback (hunchentoot:request-uri*))))))
Посмотреть используемую реализацию storage можно здесь.

Комментариев нет:

Отправить комментарий