{-# LANGUAGE DeriveFunctor #-}

module Language.Haskell.PrintfArg where

import qualified Parser.Types as P

data PrintfArg v = PrintfArg
    { flagSet :: P.FlagSet
    , width :: Maybe Int
    , prec :: Maybe Int
    , lengthSpec :: Maybe P.LengthSpecifier
    , fieldSpec :: Char
    , value :: v
    } deriving (Show, Functor)

adjustment :: PrintfArg v -> Maybe P.Adjustment
adjustment = P.adjustment . flagSet

signed, spaced, prefixed :: PrintfArg v -> Bool
signed = P.signed . flagSet

spaced = P.spaced . flagSet

prefixed = P.prefixed . flagSet