@@ -322,20 +322,18 @@ markdown interpolation = try (string "[markdown|") >> closeMarkdown (++ "") []
322322 ]
323323
324324glShader :: IParser (String, Literal.GLShaderTipe)
325−glShader = do
326− do
327− rawSrc <- try (string "[glShader|") >> closeShader ""
328− case glSource rawSrc of
329− Left err -> parserFail . show $ err
330− Right tipe -> return (rawSrc, tipe)
331− where
332− closeShader src = choice
333− [ do
334− try (string "|]")
335− return src
336− , do
337− c <- anyChar
338− closeShader (src ++ [c])
325+glShader =
326+ do try (string "[glShader|")
327+ rawSrc <- closeShader id
328+ case glSource rawSrc of
329+ Left err -> parserFail . show $ err
330+ Right tipe -> return (rawSrc, tipe)
331+ where
332+ closeShader builder = choice
333+ [ do try (string "|]")
334+ return (builder "")
335+ , do c <- anyChar
336+ closeShader (builder . (c:))
339337 ]
340338
341339glSource :: String -> Either ParseError Literal.GLShaderTipe