packages feed

stdf-0.2.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

isFtr :: Rec -> Bool
isFtr (Ftr{}) = True
isFtr _ = False

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