simple-templates 1.0.0 → 2.0.0
raw patch · 2 files changed
+8/−6 lines, 2 files
Files
simple-templates.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: simple-templates-version: 1.0.0+version: 2.0.0 synopsis: A basic template language for the Simple web framework description: A basic template language for the Simple web framework. The language supports
src/Web/Simple/Templates/Language.hs view
@@ -37,6 +37,8 @@ import qualified Data.HashMap.Strict as H import Data.Aeson+import qualified Data.Aeson.Key as K+import qualified Data.Aeson.KeyMap as K import Data.Maybe import Data.Scientific import Data.Text (Text)@@ -68,13 +70,13 @@ ASTVar ident -> if ident == "@" then global else case global of- Object obj -> fromMaybe Null $ H.lookup ident obj+ Object obj -> fromMaybe Null $ K.lookup (K.fromText ident) obj _ -> Null ASTIndex objAst idents -> foldl (\val ident -> case val of- Object obj -> fromMaybe Null $ H.lookup ident obj+ Object obj -> fromMaybe Null $ K.lookup (K.fromText ident) obj _ -> Null) (evaluateAST fm global objAst) idents ASTArray asts -> Array $ V.map (evaluateAST fm global) asts@@ -98,7 +100,7 @@ Bool False -> String "" Array vec -> String $ go (zip [0..(V.length vec)] $ V.toList vec) mempty- Object obj -> String $ go (H.toList obj) mempty+ Object obj -> String $ go (K.toList obj) mempty v -> evaluateAST fm (replaceVar global valName v) body where sep = maybe (String "") (evaluateAST fm global) msep val = evaluateAST fm global lst@@ -118,8 +120,8 @@ maybe global (\k -> replaceVar global k $ toJSON v) mkeyName replaceVar :: Value -> Identifier -> Value -> Value-replaceVar (Object orig) varName newVal = Object $ H.insert varName newVal orig-replaceVar _ varName newVal = object [varName .= newVal]+replaceVar (Object orig) varName newVal = Object $ K.insert (K.fromText varName) newVal orig+replaceVar _ varName newVal = object [(K.fromText varName) .= newVal] evaluate :: AST -> Template evaluate ast = Template $ \fm global ->