HStringTemplate 0.6.8 → 0.6.9
raw patch · 3 files changed
+37/−17 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Text.StringTemplate: directoryGroupExt :: Stringable a => FilePath -> FilePath -> IO (STGroup a)
+ Text.StringTemplate: directoryGroupLazyExt :: Stringable a => FilePath -> FilePath -> IO (STGroup a)
+ Text.StringTemplate: directoryGroupRecursiveExt :: Stringable a => FilePath -> FilePath -> IO (STGroup a)
+ Text.StringTemplate: directoryGroupRecursiveLazyExt :: Stringable a => FilePath -> FilePath -> IO (STGroup a)
- Text.StringTemplate: class Show a => StringTemplateShows a
+ Text.StringTemplate: class Show a => StringTemplateShows a where stringTemplateShow = show stringTemplateFormattedShow = flip $ const . stringTemplateShow
- Text.StringTemplate: class Stringable a
+ Text.StringTemplate: class Stringable a where stFromByteString = stFromString . unpack mconcatMap m k = foldr (smappend . k) smempty m mintercalate = (smconcat .) . intersperse mlabel x y = smconcat [x, stFromString "[", y, stFromString "]"] smconcat xs = foldr (smappend . id) smempty xs
- Text.StringTemplate: class ToSElem a
+ Text.StringTemplate: class ToSElem a where toSElemList = LI . map toSElem
- Text.StringTemplate.Base: class Show a => StringTemplateShows a
+ Text.StringTemplate.Base: class Show a => StringTemplateShows a where stringTemplateShow = show stringTemplateFormattedShow = flip $ const . stringTemplateShow
- Text.StringTemplate.Base: class Stringable a
+ Text.StringTemplate.Base: class Stringable a where stFromByteString = stFromString . unpack mconcatMap m k = foldr (smappend . k) smempty m mintercalate = (smconcat .) . intersperse mlabel x y = smconcat [x, stFromString "[", y, stFromString "]"] smconcat xs = foldr (smappend . id) smempty xs
- Text.StringTemplate.Base: class ToSElem a
+ Text.StringTemplate.Base: class ToSElem a where toSElemList = LI . map toSElem
- Text.StringTemplate.Classes: class Show a => StringTemplateShows a
+ Text.StringTemplate.Classes: class Show a => StringTemplateShows a where stringTemplateShow = show stringTemplateFormattedShow = flip $ const . stringTemplateShow
- Text.StringTemplate.Classes: class Stringable a
+ Text.StringTemplate.Classes: class Stringable a where stFromByteString = stFromString . unpack mconcatMap m k = foldr (smappend . k) smempty m mintercalate = (smconcat .) . intersperse mlabel x y = smconcat [x, stFromString "[", y, stFromString "]"] smconcat xs = foldr (smappend . id) smempty xs
- Text.StringTemplate.Classes: class ToSElem a
+ Text.StringTemplate.Classes: class ToSElem a where toSElemList = LI . map toSElem
Files
- HStringTemplate.cabal +2/−2
- Text/StringTemplate.hs +4/−2
- Text/StringTemplate/Group.hs +31/−13
HStringTemplate.cabal view
@@ -1,5 +1,5 @@ name: HStringTemplate-version: 0.6.8+version: 0.6.9 synopsis: StringTemplate implementation in Haskell. description: A port of the Java library by Terrence Parr. category: Text@@ -7,7 +7,7 @@ license-file: LICENSE author: Sterling Clover maintainer: s.clover@gmail.com-Tested-With: GHC == 6.10.3+Tested-With: GHC == 7.0.4 Build-Type: Simple build-Depends: base Cabal-Version: >= 1.6
Text/StringTemplate.hs view
@@ -48,9 +48,11 @@ setEncoder, setEncoderGroup, -- * Groups groupStringTemplates, addSuperGroup, addSubGroup,- mergeSTGroups, directoryGroup, unsafeVolatileDirectoryGroup,+ mergeSTGroups, directoryGroup, directoryGroupExt,+ unsafeVolatileDirectoryGroup, directoryGroupRecursive, directoryGroupRecursiveLazy,- directoryGroupLazy, nullGroup+ directoryGroupRecursiveExt, directoryGroupRecursiveLazyExt,+ directoryGroupLazy, directoryGroupLazyExt, nullGroup ) where import Text.StringTemplate.Base import Text.StringTemplate.Group
Text/StringTemplate/Group.hs view
@@ -3,8 +3,10 @@ module Text.StringTemplate.Group (groupStringTemplates, addSuperGroup, addSubGroup, setEncoderGroup,- mergeSTGroups, directoryGroup, optInsertGroup,- directoryGroupLazy, directoryGroupRecursive, directoryGroupRecursiveLazy,+ mergeSTGroups, directoryGroup, directoryGroupExt, optInsertGroup,+ directoryGroupLazy, directoryGroupLazyExt, directoryGroupRecursive,+ directoryGroupRecursiveExt, directoryGroupRecursiveLazy,+ directoryGroupRecursiveLazyExt, unsafeVolatileDirectoryGroup, nullGroup ) where import Control.Applicative@@ -41,13 +43,13 @@ stmp <- newSTMP <$> rf f return (fname, stmp)) -getTmplsRecursive :: FilePath -> FilePath -> IO [(FilePath, FilePath)]-getTmplsRecursive base fp = do+getTmplsRecursive :: FilePath -> FilePath -> FilePath -> IO [(FilePath, FilePath)]+getTmplsRecursive ext base fp = do dirContents <- filter (not . isPrefixOf ".") <$> getDirectoryContents fp subDirs <- filterM (doesDirectoryExist . (fp </>)) dirContents- subs <- concat <$> mapM (\x -> getTmplsRecursive (base </> x) (fp </> x)) subDirs- return $ (map ((fp </>) &&& (\x -> base </> dropExtension x)) $- filter ((".st" ==) . takeExtension) dirContents)+ subs <- concat <$> mapM (\x -> getTmplsRecursive ext (base </> x) (fp </> x)) subDirs+ return $ (map ((fp </>) &&& (\x -> base </> dropExtensions x)) $+ filter ((ext ==) . takeExtension) dirContents) ++ subs {--------------------------------------------------------------------@@ -66,9 +68,13 @@ -- This function is strict, with all files read once. As it performs file IO, -- expect it to throw the usual exceptions. directoryGroup :: (Stringable a) => FilePath -> IO (STGroup a)-directoryGroup path =+directoryGroup = directoryGroupExt ".st"++-- | Given a path, returns a group which generates all files in said directory which have the supplied extension.+directoryGroupExt :: (Stringable a) => FilePath -> FilePath -> IO (STGroup a)+directoryGroupExt ext path = groupFromFiles readFile' .- map ((</>) path &&& takeBaseName) . filter ((".st" ==) . takeExtension) =<<+ map ((</>) path &&& takeBaseName) . filter ((ext ==) . takeExtension) =<< getDirectoryContents path -- | Given a path, returns a group which generates all files in said directory@@ -79,19 +85,31 @@ -- expect it to throw the usual exceptions. And, as it is lazy, expect -- these exceptions in unexpected places. directoryGroupLazy :: (Stringable a) => FilePath -> IO (STGroup a)-directoryGroupLazy path =+directoryGroupLazy = directoryGroupLazyExt ".st"++-- | Given a path, returns a group which generates all files in said directory which have the supplied extension.+directoryGroupLazyExt :: (Stringable a) => FilePath -> FilePath -> IO (STGroup a)+directoryGroupLazyExt ext path = groupFromFiles U.readFile .- map ((</>) path &&& takeBaseName) . filter ((".st" ==) . takeExtension) =<<+ map ((</>) path &&& takeBaseName) . filter ((ext ==) . takeExtension) =<< getDirectoryContents path -- | As with 'directoryGroup', but traverses subdirectories as well. A template named -- \"foo/bar.st\" may be referenced by \"foo/bar\" in the returned group. directoryGroupRecursive :: (Stringable a) => FilePath -> IO (STGroup a)-directoryGroupRecursive path = groupFromFiles readFile' =<< getTmplsRecursive "" path+directoryGroupRecursive = directoryGroupRecursiveExt ".st" +-- | As with 'directoryGroupRecursive', but a template extension is supplied.+directoryGroupRecursiveExt :: (Stringable a) => FilePath -> FilePath -> IO (STGroup a)+directoryGroupRecursiveExt ext path = groupFromFiles readFile' =<< getTmplsRecursive ext "" path+ -- | See documentation for 'directoryGroupRecursive'. directoryGroupRecursiveLazy :: (Stringable a) => FilePath -> IO (STGroup a)-directoryGroupRecursiveLazy path = groupFromFiles U.readFile =<< getTmplsRecursive "" path+directoryGroupRecursiveLazy = directoryGroupRecursiveLazyExt ".st"++-- | As with 'directoryGroupRecursiveLazy', but a template extension is supplied.+directoryGroupRecursiveLazyExt :: (Stringable a) => FilePath -> FilePath -> IO (STGroup a)+directoryGroupRecursiveLazyExt ext path = groupFromFiles U.readFile =<< getTmplsRecursive ext "" path -- | Adds a supergroup to any StringTemplate group such that templates from -- the original group are now able to call ones from the supergroup as well.