on master help sign in
fix bad markdown performance
a5a6f2bDanDanDan
compiler/Parse/Helpers.hs+4−4
@@ -302,14 +302,14 @@ anyUntilPos pos = go
302 False -> (:) <$> anyChar <*> go
302 False -> (:) <$> anyChar <*> go
303
303
304markdown :: (String -> [a] -> IParser (String, [a])) -> IParser (String, [a])
304markdown :: (String -> [a] -> IParser (String, [a])) -> IParser (String, [a])
305−markdown interpolation = try (string "[markdown|") >> closeMarkdown "" []
305+markdown interpolation = try (string "[markdown|") >> closeMarkdown (++ "") []
306 where
306 where
307 closeMarkdown md stuff =
307 closeMarkdown md stuff =
308 choice [ do try (string "|]")
308 choice [ do try (string "|]")
309− return (md, stuff)
309+ return (md "", stuff)
310− , uncurry closeMarkdown =<< interpolation md stuff
310+ , (\(m,s) -> closeMarkdown (m ++) s) =<< interpolation (md "") stuff
311 , do c <- anyChar
311 , do c <- anyChar
312− closeMarkdown (md ++ [c]) stuff
312+ closeMarkdown (md . ([c]++)) stuff
313 ]
313 ]
314
314
315--str :: IParser String
315--str :: IParser String