@@ -68,7 +68,7 @@ module Text.Pandoc.Templates ( renderTemplate
6868 , TemplateTarget
6969 , getDefaultTemplate ) where
7070
71−import Text.Pandoc.Parsing
71+import Text.Parsec
7272import Control.Monad (liftM, when, forM, mzero)
7373import System.FilePath
7474import Data.List (intercalate, intersperse)
@@ -98,7 +98,7 @@ getDefaultTemplate user writer = do
9898
9999data TemplateState = TemplateState Int [(String,String)]
100100
101−adjustPosition :: String -> Parser [Char] TemplateState String
101+adjustPosition :: String -> Parsec [Char] TemplateState String
102102adjustPosition str = do
103103 let lastline = takeWhile (/= '\n') $ reverse str
104104 updateState $ \(TemplateState pos x) ->
@@ -132,21 +132,21 @@ renderTemplate vals templ =
132132reservedWords :: [String]
133133reservedWords = ["else","endif","for","endfor","sep"]
134134
135−parseTemplate :: Parser [Char] TemplateState [String]
135+parseTemplate :: Parsec [Char] TemplateState [String]
136136parseTemplate =
137137 many $ (plaintext <|> escapedDollar <|> conditional <|> for <|> variable)
138138 >>= adjustPosition
139139
140−plaintext :: Parser [Char] TemplateState String
140+plaintext :: Parsec [Char] TemplateState String
141141plaintext = many1 $ noneOf "$"
142142
143−escapedDollar :: Parser [Char] TemplateState String
143+escapedDollar :: Parsec [Char] TemplateState String
144144escapedDollar = try $ string "$$" >> return "$"
145145
146−skipEndline :: Parser [Char] st ()
146+skipEndline :: Parsec [Char] st ()
147147skipEndline = try $ skipMany (oneOf " \t") >> newline >> return ()
148148
149−conditional :: Parser [Char] TemplateState String
149+conditional :: Parsec [Char] TemplateState String
150150conditional = try $ do
151151 TemplateState pos vars <- getState
152152 string "$if("
@@ -170,7 +170,7 @@ conditional = try $ do
170170 then ifContents
171171 else elseContents
172172
173−for :: Parser [Char] TemplateState String
173+for :: Parsec [Char] TemplateState String
174174for = try $ do
175175 TemplateState pos vars <- getState
176176 string "$for("
@@ -193,7 +193,7 @@ for = try $ do
193193 setState $ TemplateState pos vars
194194 return $ concat $ intersperse sep contents
195195
196−ident :: Parser [Char] TemplateState String
196+ident :: Parsec [Char] TemplateState String
197197ident = do
198198 first <- letter
199199 rest <- many (alphaNum <|> oneOf "_-")
@@ -202,7 +202,7 @@ ident = do
202202 then mzero
203203 else return id'
204204
205−variable :: Parser [Char] TemplateState String
205+variable :: Parsec [Char] TemplateState String
206206variable = try $ do
207207 char '$'
208208 id' <- ident