@@ -1,5 +1,5 @@
11module Text.Hakyll.Internal.Template
2− ( Template
2+ ( Template (..)
33 , fromString
44 , readTemplate
55 , substitute
@@ -11,14 +11,11 @@ import qualified Data.Map as M
1111import Data.List (isPrefixOf)
1212import Data.Char (isAlphaNum)
1313import Data.Binary
14−import Control.Monad (liftM, liftM2, replicateM)
15−import Control.Applicative ((<$>))
14+import Control.Monad (liftM, liftM2)
1615import Data.Maybe (fromMaybe)
1716import System.FilePath ((</>))
1817import Control.Monad.Reader (liftIO)
1918
20−import Test.QuickCheck
21−
2219import Text.Hakyll.Context (Context)
2320import Text.Hakyll.HakyllMonad (Hakyll)
2421import Text.Hakyll.Internal.Cache
@@ -91,32 +88,3 @@ instance Binary Template where
9188 2 -> liftM EscapeCharacter get
9289 3 -> return End
9390 _ -> error "Error reading template"
94−
95−-- | Generate arbitrary templates from a given length.
96−arbitraryTemplate :: Int -> Gen Template
97−arbitraryTemplate 0 = return End
98−arbitraryTemplate length' = oneof [ do chunk <- chunk'
99− Chunk chunk <$> template'
100− , do key <- key'
101− Identifier key <$> template'
102− , EscapeCharacter <$> template'
103− ]
104− where
105− template' = arbitraryTemplate (length' - 1)
106− -- Generate keys.
107− key' = do l <- choose (5, 10)
108− replicateM l $ choose ('a', 'z')
109− -- Generate non-empty chunks.
110− chunk' = do string <- arbitrary
111− let sanitized = filter (/= '$') string
112− return $ if null sanitized then "foo"
113− else sanitized
114−
115−-- | Make @Template@ testable.
116−instance Arbitrary Template where
117− arbitrary = choose (0, 20) >>= arbitraryTemplate
118−
119− shrink (Chunk chunk template) = [template, Chunk chunk End]
120− shrink (Identifier key template) = [template, Identifier key End]
121− shrink (EscapeCharacter template) = [template, EscapeCharacter End]
122− shrink End = []