-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Convenience functions and instances for HStringTemplate -- -- Convenience functions and instances for HStringTemplate. I will -- deprecate this package if its contents are integrated into -- HStringTemplate. @package HStringTemplateHelpers @version 0.0.7 -- | Functions I found useful for doing webapps with HStringTemplate. -- -- More usage examples can be found by grep -r -- "Text.StringTemplate.Helpers" in happs-tutorial, on hackage. module Text.StringTemplate.Helpers -- | calculate a map of directory groups from a top-level directory -- -- Each directory gives rise to its own groups. -- -- Groups are independent; groups from higher in the directory structure -- do not have access to groups lower. -- -- The top group has key "." (mnemonic, current directory), other groups -- have key names of subdirectories, including the starting ., eg -- "./templates/path/to/subdir" directoryGroups' :: (FilePath -> IO a) -> FilePath -> IO (Map FilePath a) directoryGroups :: (Stringable a) => FilePath -> IO (Map FilePath (STGroup a)) directoryGroups2 :: (Stringable a) => FilePath -> IO (Map FilePath (STGroup a)) -- | The STGroup can't be shown in a useful way because it's a function -- type, but you can at least show the directories via Data.Map.keys. dirgroupKeys :: (Stringable a) => STDirGroups a -> [FilePath] -- |
-- example: getTG "./baselayout" ts' --getTemplateGroup :: (Stringable a) => FilePath -> STDirGroups a -> STGroup a -- |
-- example: renderTemplateDirGroup ts' "./baselayout" "base" --renderTemplateDirGroup :: (ToSElem a) => STDirGroups String -> FilePath -> String -> [(String, a)] -> String lookupDirgroup :: (Stringable a) => FilePath -> STDirGroups a -> Maybe (STGroup a) -- | Chooses a template from an STGroup, or errors if not found. -- -- Render that template using attrs. -- -- If a template k/v pair is repeated, it appears twice. (Perhaps a clue -- to buggy behavior?) -- -- Repeated keys could be eliminated by running clean: -- --
-- clean = nubBy (\(a1,b1) (a2,b2) -> a1 == a2) . sortBy (\(a1,b1) (a2,b2) -> a1 `compare` a2) ---- -- The ToSElem type is probably either String or [String] renderTemplateGroup :: (ToSElem a) => STGroup String -> [(String, a)] -> [Char] -> String -- |
-- render1 [("name","Bill")] "Hi, my name is $name$"
-- render1 attribs tmpl = render . setManyAttrib attribs . newSTMP $ tmpl
--
render1 :: [(String, String)] -> String -> String
type STDirGroups a = Map FilePath (STGroup a)
readTmplDef :: (Read b) => b -> STGroup String -> FilePath -> b
readTmplM :: (Monad m, Read a) => STGroup String -> FilePath -> m a
readTmplTuples :: STGroup String -> String -> [(String, String)]