import Data.Functor import Data.Aeson import qualified Data.Text as T import qualified Data.Vector as V import qualified Data.ByteString.Lazy.Char8 as L import Database.TxtSushi.FlatFile import System.Environment import Utils {- Encoding note: Nothing fancy is done about encoding, on both ends. So it basically works for UTF-8 which does not mess up with the delimitors of both CSV and JSON. -} csv2json :: FilePath -> IO Value csv2json = fmap (Array . fmap (Array . fmap (String . T.pack) . V.fromList) . V.fromList . parseTable csvFormat) . getContentsFromFileOrStdin main :: IO () main = L.putStrLn . encode . mayArray =<< mapM csv2json . addDefaultInput =<< getArgs where mayArray [x] = x mayArray xs = Array $ V.fromList xs