{-# LANGUAGE OverloadedStrings #-}

module Data.FixedWidth.Examples where

import Data.FixedWidth.Parsers

import Data.Aeson
import Data.Attoparsec.Text as StrictText

import qualified Data.Text as T

data Entry = Entry {eDate :: Date,
                    eNames :: [T.Text],
                    eValue :: Int} deriving Show

parseEntry :: Parser Entry
parseEntry = do
  date <- fixDate8
  names <- count 4 (StrictText.take 4)
  (Just value) <- fixInt 3
  return $ Entry date names value

instance ToJSON Entry where
  toJSON (Entry date names value) =
    object ["date" .= date,
            "names" .= names,
            "value" .= value]