packages feed

stdf-0.1.0.0: Examples/StdfToJson.hs

module Main where

import Data.Stdf
import qualified Data.ByteString.Lazy.Char8 as BL
import System.Environment (getArgs)
import System.Exit (exitFailure)
import Control.Monad (when)
import Data.Aeson

printUsage = putStrLn "usage: StdfToJson file.stdf"

-- unparsed records have type Raw for the time being
notRaw :: Rec -> Bool
notRaw (Raw _) = False
notRaw _       = True

main = do
    args <- getArgs
    when (length args /= 1) $ do
        printUsage
        exitFailure
    let file = head args
    raw <- BL.readFile file
    let recs = parse raw
    let goodRecs = filter notRaw recs
    mapM_ (BL.putStrLn . encode) goodRecs