packages feed

optima-0.4.0.4: demo/Main.hs

module Main where

import qualified Attoparsec.Data as Attoparsec
import qualified Data.Text as Text
import qualified Optima
import Prelude

main = parseOpts >>= print
  where
    parseOpts =
      Optima.params
        "Demo"
        ( liftA3
            (,,)
            ( Optima.param
                (Just 'a')
                "arg-a"
                ( Optima.value
                    "Description of A"
                    (Optima.showable True)
                    Optima.unformatted
                    (Optima.explicitlyParsed Attoparsec.bool)
                )
            )
            ( Optima.group
                "group1"
                ( liftA2
                    (,)
                    ( Optima.member
                        "bb"
                        ( Optima.value
                            "Description of B"
                            Optima.defaultless
                            Optima.unformatted
                            (Optima.explicitlyParsed Attoparsec.text)
                        )
                    )
                    (Optima.member "d" textParam)
                )
            )
            ( Optima.group
                "group-of-alternatives"
                ( asum
                    [ Optima.member "e" textParam,
                      Optima.subgroup
                        "subgroup"
                        ( asum
                            [ Optima.member "f" textParam,
                              Optima.member "g" (flag $> "slkdfjsdkj"),
                              Text.concat <$> some (Optima.member "h" textParam)
                            ]
                        )
                    ]
                )
            )
        )
      where
        textParam = Optima.value "Text param" Optima.defaultless Optima.unformatted (Optima.explicitlyParsed Attoparsec.text)
        flag = Optima.flag "Flag type 1"
        bytesParam = Optima.value "" Optima.defaultless Optima.unformatted (Optima.explicitlyParsed Attoparsec.utf8Bytes)