Newer
Older
#!/usr/bin/env -S runhaskell --ghc-arg="-Wall"
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Text (Text, lines, unsnoc)
import Data.Text.IO (interact)
import Prelude hiding (interact, lines)
detokenize :: [Text] -> Text
detokenize [] = "\n"
detokenize [w] = w <> "\n"
detokenize (w:c:ws)
| c `elem` [",", "."] = w <> c <> " " <> detokenize ws
detokenize (w:ws) = finish $ unsnoc w
where
finish Nothing = detokenize ws
finish (Just (_, c))
| c == '\'' = w <> detokenize ws
| otherwise = w <> " " <> detokenize ws
main :: IO ()
main = interact $ detokenize . lines