on master help sign in
Escaped carries allong it's escaped value
commit220e4b484cb460df0e0a0cb50a309788349745b2 authorJasper Van der Jeugt <jaspervdj@gmail.com> dateSun 2 Jan 2011, 12:49 (16 years ago) parent2d12251
2 files changed+11−7
src/Hakyll/Web/Template.hs+7−3 src/Hakyll/Web/Template/Internal.hs+4−4
src/Hakyll/Web/Template.hs+7−3
@@ -21,14 +21,18 @@ readTemplate = Template . readTemplate'
2121 readTemplate' [] = []
2222 readTemplate' string
2323 | "$$" `isPrefixOf` string =
24− EscapeCharacter : (readTemplate' $ drop 2 string)
24+ let (key, rest) = readIdentifier $ drop 2 string
25+ in Escaped key : readTemplate' rest
2526 | "$" `isPrefixOf` string =
26− let (key, rest) = span isAlphaNum $ drop 1 string
27+ let (key, rest) = readIdentifier $ drop 1 string
2728 in Identifier key : readTemplate' rest
2829 | otherwise =
2930 let (chunk, rest) = break (== '$') string
3031 in Chunk chunk : readTemplate' rest
3132
33+ -- Parse an identifier into (identifier, rest)
34+ readIdentifier = span isAlphaNum
35+
3236-- | Substitutes @$identifiers@ in the given @Template@ by values from the given
3337-- "Page". When a key is not found, it is left as it is. You can specify
3438-- the characters used to replace escaped dollars (@$$@) here.
@@ -40,7 +44,7 @@ applyTemplate template page =
4044 substitute (Chunk chunk) = chunk
4145 substitute (Identifier key) =
4246 fromMaybe ('$' : key) $ M.lookup key $ toMap page
43− substitute (EscapeCharacter) = "$"
47+ substitute (Escaped key) = '$' : key
4448
4549-- | Apply a page as it's own template. This is often very useful to fill in
4650-- certain keys like @$root@ and @$url@.
src/Hakyll/Web/Template/Internal.hs+4−4
@@ -29,16 +29,16 @@ instance Writable Template where
2929data TemplateElement
3030 = Chunk String
3131 | Identifier String
32− | EscapeCharacter
32+ | Escaped String
3333 deriving (Show, Eq, Typeable)
3434
3535instance Binary TemplateElement where
3636 put (Chunk string) = putWord8 0 >> put string
3737 put (Identifier key) = putWord8 1 >> put key
38− put (EscapeCharacter) = putWord8 2
38+ put (Escaped key) = putWord8 2 >> put key
3939
4040 get = getWord8 >>= \tag -> case tag of
41− 0 -> Chunk <$> get
41+ 0 -> Chunk <$> get
4242 1 -> Identifier <$> get
43− 2 -> return EscapeCharacter
43+ 2 -> Escaped <$> get
4444 _ -> error "Error reading cached template"