{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.IO as TIO
import Safe
prefixLength :: Text -> Int
prefixLength line = T.length prefix
where
(prefix, _) = T.breakOn "=" line
adjustLine :: Int -> Text -> Text
adjustLine desiredPrefixLength oldLine = newLine
where
(prefix, suffix) = T.breakOn "=" oldLine
actualPrefixLength = T.length prefix
additionalSpaces = desiredPrefixLength - actualPrefixLength
spaces = T.replicate additionalSpaces " "
newLine = T.concat [ prefix, spaces, suffix ]
adjustText :: Text -> Text
adjustText oldText = newText
where
oldLines = T.lines oldText
prefixLengths = map prefixLength oldLines
newLines =
case maximumMay prefixLengths of
Nothing ->
[]
Just desiredPrefixLength ->
map (adjustLine desiredPrefixLength) oldLines
newText = T.unlines newLines
main :: IO ()
main = TIO.interact adjustText