Добавление перехватчиков OnLoad для шаблонов Heist с помощью Snap Web Framework

Я хочу добавить несколько хуков для предварительной обработки шаблонов Heist в веб-приложении с помощью Snap. До сих пор мой наивный подход заключался в использовании следующего кода в моем инициализаторе приложения:

app :: SnapletInit App App
app = makeSnaplet "app" "The main web application" Nothing $ do
    -- ...
    h <- nestSnaplet "heist" heist $ heistInit "resources/templates"
    -- ...
    modifyHeistTS . addOnLoadHook $ myTemplateHook

Этот код, конечно, не работает, так как хук добавляется после загрузки шаблонов из "ресурсов / шаблонов"

Как можно изменить состояние шаблона Heist до загрузки начальных шаблонов, чтобы добавить хуки OnLoad?

1 ответ

Решение

Отличный вопрос. Похоже, это упущение с моей стороны при разработке библиотеки. Я подумаю, как лучше поддержать это и вернусь к вам.

Если вы хотите немедленное решение, вставьте что-нибудь, чтобы добавить свой хук в состояние шаблона, которое передается здесь в loadTemplates. Или же вы можете изменить emptyTemplateState прямо в Heist.

Обновление: я добавил функцию heistInit, которая должна решить эту проблему. Это будет в следующем выпуске взлома. До тех пор вы можете получить его из GitHub.

Другие вопросы по тегам