module Sound.Sox.Private.Option where
import qualified Sound.Sox.Private.Arguments as Args
import qualified Data.Map as Map
import Data.Monoid (Monoid(mappend, mempty), )
import Data.Semigroup (Semigroup((<>)), )
newtype T = Cons {decons :: Map.Map String [String]}
instance Semigroup T where
Cons x <> Cons y = Cons (Map.union x y)
instance Monoid T where
mempty = Cons mempty
mappend = (<>)
toArguments :: T -> Args.T
toArguments =
Args.Cons .
concatMap (\(name,values) -> name:values) . Map.toList .
decons
single :: String -> [String] -> T
single name values =
Cons (Map.singleton name values)