fix bad markdown performance

This commit is contained in:
DanDanDan 2014-01-29 02:25:26 +01:00
parent f636b7576f
commit a5a6f2beb1

View file

@ -302,14 +302,14 @@ anyUntilPos pos = go
False -> (:) <$> anyChar <*> go False -> (:) <$> anyChar <*> go
markdown :: (String -> [a] -> IParser (String, [a])) -> IParser (String, [a]) markdown :: (String -> [a] -> IParser (String, [a])) -> IParser (String, [a])
markdown interpolation = try (string "[markdown|") >> closeMarkdown "" [] markdown interpolation = try (string "[markdown|") >> closeMarkdown (++ "") []
where where
closeMarkdown md stuff = closeMarkdown md stuff =
choice [ do try (string "|]") choice [ do try (string "|]")
return (md, stuff) return (md "", stuff)
, uncurry closeMarkdown =<< interpolation md stuff , (\(m,s) -> closeMarkdown (m ++) s) =<< interpolation (md "") stuff
, do c <- anyChar , do c <- anyChar
closeMarkdown (md ++ [c]) stuff closeMarkdown (md . ([c]++)) stuff
] ]
--str :: IParser String --str :: IParser String