Hastache — реализация Mustache для Haskell
Довел до ума и выложил в open source свою реализация шаблонизатора Mustache, на которой, в частности, крутится сайт с которого вы это сейчас читаете.
Взять можно либо на GitHub, либо из HackageDB:
Шаблоны Mustache
Mustache — библиотека минималистичных шаблонов изначально реализованная для Ruby Крисом Ванстрасом (между прочим CEO и один из основателей GitHub). Минимализм Mustache выражается в том, что там нет управляющих конструкций вроде if и else. Циклов там тоже нет, есть только теги. Некоторые теги заменяются простыми значениями, некоторые заменяются сериями значений, показ содержимого других зависит от определенных условий. Несмотря на весь аскетизм своего синтаксиса, Mustache является мощным и полноценным движком шаблонов.
Вдохновителями Mustache послужили ctemplate и et.
Сейчас существуют реализации Mustache для огромного количества языков. Необходимо учитывать что на разных языках нюансы работы будут немного отличатся. Я сделаю обзор без привязки к конкретному языку, однако данные для примеров буду писать на JSON, т. к. думаю он всем понятен, и кроме всего прочего используется в документации к Mustache.
Обновления wsrch.ru
Обновления на www.wsrch.ru:
- При открытии поисковика показываю значок загрузки
- Исправил незначительные ошибки при отображении выпадающего списка подсказок для поиска
- Добавил подсказки для кнопок (включаются в режиме редактирования)
- Добавил украинские Google, Яндекс и Wikipedia
Если кому ещё что-то надо — пишите
Бинарная сериализация в Haskell: использование библиотеки derive
В рамках борьбы с велосипедизмом, я просто обязан написать про библиотеку derive. Служит она для автоматической генерации инстансов разных классов (смотрите документацию каких именно, там много). Меня эта библиотека заинтересовала, прежде всего, как генератор для Data.Binary, которая очень удобна как быстрый бинарный сериализатор над Data.ByteString.Lazy. У себя на сайте я использую Data.Binary для кеширования данных. Derive умеет генерировать как обычный код внутри .hs файлов, так и создавать инстансы во время компиляции с помощью Template Haskell.