-- SPDX-FileCopyrightText: 2023 David Mosbach -- -- SPDX-License-Identifier: AGPL-3.0-or-later module Templates where import Text.EDE import Data.Either (fromRight) import Data.HashMap.Strict import Data.Aeson (Value) import Data.Maybe (fromMaybe) import Data.Text import qualified Data.Text.Lazy as TL type RenderContext = HashMap Text Value renderAppHtml :: Maybe RenderContext -> IO String renderAppHtml context = do template <- eitherParseFile "editor.html" let result = either error id $ template >>= (`eitherRender` fromMaybe (fromPairs [] :: RenderContext) context) return $ TL.unpack result