3

Snapを使用して Web アプリケーションでHeistテンプレートを前処理するためのフックをいくつか追加したいと考えています。これまでの私の素朴なアプローチは、アプリケーション初期化子で次のコードを使用することでした。

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

テンプレートが「リソース/テンプレート」からロードされた後にフックが追加されるため、このコードはもちろん機能しません。

OnLoad フックを追加するために、初期テンプレートがロードされる前に Heist テンプレートの状態を変更するにはどうすればよいでしょうか?

4

1 に答える 1

2

素晴らしい質問です。これは、ライブラリを設計する際の私の見落としのようです。これをサポートする最善の方法を考えて、折り返しご連絡いたします。

すぐに回避策が必要な場合は、何かを挿入して、 loadTemplates hereに渡されるテンプレートの状態にフックを追加します。または、heist で emptyTemplateState を直接変更することもできます。

更新:この問題を処理する heistInit 関数を追加しました。それは次のハックリリースにあるでしょう。それまではgithubから入手できます。

于 2011-11-28T16:19:25.057 に答える