module Format ( fmtFile , fmtInplace ) where import Control.Exception.Value (eitherThrow) import Control.Monad ((<=<)) import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as BSL import qualified Data.Text as T import Data.Text.IO as TIO import Data.Text.Prettyprint.Doc.Ext (prettyText) import Language.Dickinson.Parser format :: BSL.ByteString -> T.Text format = prettyText . eitherThrow . parse fmtFile :: FilePath -> IO () fmtFile = TIO.putStrLn . format <=< BSL.readFile fmtInplace :: FilePath -> IO () fmtInplace fp = TIO.writeFile fp . format . BSL.fromStrict =<< BS.readFile fp