Remove cariage return from the qq string
All checks were successful
Build / audit (push) Successful in 16s
Build / test (push) Successful in 6m8s
Build / doc (push) Successful in 5m8s

This commit is contained in:
2024-08-04 08:30:00 +02:00
parent 9b11300d23
commit 9d85379826
4 changed files with 43 additions and 4 deletions

View File

@ -12,17 +12,26 @@ import Language.Haskell.TH (Exp(..), Lit(..))
stripIndentation :: String -> String
stripIndentation code = reverse
$ dropNewlines
$ dropWhile isLineBreak
$ reverse
$ unlines
$ indent spaces <$> lines withoutLeadingNewlines
$ indent spaces <$> lines' withoutLeadingNewlines
where
indent 0 xs = xs
indent count (' ' : xs) = indent (count - 1) xs
indent _ xs = xs
withoutLeadingNewlines = dropNewlines code
dropNewlines = dropWhile $ flip any ['\n', '\r'] . (==)
withoutLeadingNewlines = dropWhile isLineBreak code
spaces = length $ takeWhile (== ' ') withoutLeadingNewlines
lines' "" = []
lines' string =
let (line, rest) = break isLineBreak string
reminder =
case rest of
[] -> []
'\r' : '\n' : strippedString -> lines' strippedString
_ : strippedString -> lines' strippedString
in line : reminder
isLineBreak = flip any ['\n', '\r'] . (==)
-- | Removes leading and trailing newlines. Indentation of the first line is
-- removed from each line of the string.