PageIO-0.0.3: pio.hs
module Main where
import Text.PageIO
import System.Exit
import System.Environment (getArgs, getProgName)
import Codec.Text.IConv
import qualified Data.ByteString.Char8 as S
main :: IO ()
main = do
args <- getArgs
case args of
("--dump":rest) -> do
(_, docs) <- runFromArgs rest
(`mapM_` docs) $ \(MkDoc _ lns) -> do
let lns' = S.lines . packLBS $ convert "CP950" "UTF-8" lns
(`mapM_` lns') $ S.putStrLn
("--meta":rest) -> do
(_, docs) <- runFromArgs rest
(`mapM_` docs) $ \(MkDoc meta _) -> print meta
_ -> do
(sheet, docs) <- runFromArgs args
indexDocs sheet docs
runFromArgs args = case args of
[fileIn] -> do
pagesIn <- readPages fileIn
let docs = parsePages sheetIn pagesIn
sheetIn = inferSheet fileIn pagesIn
return (sheetIn, docs)
[fileIn, duxIn] -> do
sheetIn <- readSheet duxIn
pagesIn <- readPages fileIn
let docs = parsePages sheetIn pagesIn
return (sheetIn, docs)
(fileIn:duxIn:fileOut:duxOut:_) -> do
sheetIn <- readSheet duxIn
sheetOut <- readSheet duxOut
pagesIn <- readPages fileIn
pagesOut <- readPages fileOut
let docs = transformPages sheetIn pagesIn sheetOut pagesOut
return (sheetOut, docs)
_ -> do
prog <- getProgName
putStrLn $ "Usage: " ++ prog ++ " input.txt [input.dux] [output.txt] [output.dux]"
exitWith ExitSuccess