optparse-applicative非空字符串参数

时间:2019-04-21 11:38:52

标签: haskell optparse-applicative

如何实现非空字符串参数?

NSDate

如何防止它成功解析空字符串-parserStart :: Parser String parser = strArgument (metavar "EXAMPLE")

我曾经有过使用Parsec / Attoparsec的经验,我想我可以编写自己的解析器,或者可能使用一些可应用的东西来检查值,如果是空字符串,则""(我认为这是不可能的,因为我需要一个Monad)吗?

1 个答案:

答案 0 :(得分:2)

import Data.String
import Data.Text
import Options.Applicative.Types (ReadM, readerAsk)

nonEmptystr :: IsString s => ReadM s
nonEmptystr = do
  readerAsk >>= \case
    "" -> fail "Invalid argument: Empty string"
    x -> pure $ fromString x

f :: Parser Text
f = argument nonEmptystr (metavar "task")