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

Pygments - подсветка синтаксиса.

Pygments - чудная программка на питоне для генерации подсветки синтаксиса (pretty-print) для множества языков программирования и вывода форматированного кода в различные форматы.
К чему я всё это начал рассказывать? С помощью сего дела можно прикрутить красиво оформленный код к блогу на blogger.com да и к другим блогам, где можно редактировать CSS.
Работу этой программы можно посмотреть в этом посте.
Вариант пока не окончательный, буду пытаться с помощью справочника по CSS добиваться одинакового отображения кода в разных браузерах.

Установка Pygments проста до безобразия:
python setup.py build
python setup.py install
Потом вдумчиво читаем документацию и пытаемся сгенерировать  что-нибудь. Для bash у меня получилось так:
python pygmentize -f html -l bash -O full -o test.html test.sh
Вывод в HTML, лексер bash, файл содержит CSS, писать вывод в test.html, читать из test.sh.
Получилось вполне недурно. Немножко подправил CSS, убрав "body { background: #f8f8f8; }", чтобы вид блога не страдал, и добавив принудительный перенос строк (нагуглил).
pre { line-height: 125%;
 white-space: pre-wrap;       /* css-3 */
 white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 white-space: -pre-wrap;      /* Opera 4-6 */
 white-space: -o-pre-wrap;    /* Opera 7 */
 word-wrap: break-word;       /* Internet Explorer 5.5+ */
}
Единственная проблема пока состоит в том, что в случае редактирования поста WYSIWYG-редакторе блоггера всё стили безжалостно удаляются.