25 lines
642 B
Haskell
25 lines
642 B
Haskell
-- SPDX-FileCopyrightText: 2023 David Mosbach <david.mosbach@campus.lmu.de>
|
|
--
|
|
-- 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
|