问题标签 [optparse-applicative]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 如何在 optparse-applicative 中重写 --help 标志输出
我正在尝试重写 optparse-applicative 自动生成的帮助输出。以下代码让我替换帮助输出:
(可以用 执行stack script --resolver=lts-16 main.hs -- --help
)
但是,我不想完全替换它,而只是替换自动生成的帮助文本的某些部分。这怎么可能?
haskell - 如何在 Options.Applicative 中为互斥标志编码
我是 Haskell 新手。作为一项学习练习,我正在尝试将我的一个 Rust 程序移植到 Haskell。在 Rust 中,我使用了令人惊叹的clap
包,并且被Options.Applicative
认为是一个好看的替代品。这是一个例子:
走到这一步,我撞到了一堵砖墙。我需要使“tod”和“pmc”标志互斥。包 README 中有一个使用 <|> 的示例,但它不适用于布尔标志,我不知道如何转换它。
有人可以帮忙吗?
haskell - Optparse-applicative:连续解析(ReadM)
我有一个带有add
两种参数的基本命令:一个单词或一个标签。标签只是一个以 . 开头的单词+
。一个词只是一个String
。它可以包含至少一个参数(我some
用于此)。
我想添加另一条规则:该add
命令应至少接收一个单词(但 0 个或多个标签)。为此,我需要在第一次解析单词列表后进行检查。如果它是空的,我想失败,就好像add
命令没有收到参数一样,但我不知道该怎么做。
haskell - 有没有办法在 IO monad 之外获取 optparse-aplicative 解析器的使用块
optparse-applicative
package 提供了非常强大的命令行参数解析工具。其中包括自动使用文本生成,它在解析错误的情况下打印,或者--help
如果解析器被execParser
IO monad 内部的函数使用,则由选项打印。
如果使用,有什么方法可以获取使用文本execParserPure
?
haskell - 如何防止递归定义的 optparse-applicative 解析器挂起?
假设我有以下递归定义的 ADT
我可以递归地为这个结构定义一个解析器(使用optparse-applicative,导入为OA
),如下所示:
这让我可以传递参数,例如
--colour
得到一个值Colour
--nested --colour
得到一个值Nested Colour
--nested --colour
得到一个值Nested (Nested Colour)
- 等等
不幸的是,如果我尝试为解析器生成帮助文本,它会失败。这在一定程度上是有道理的,因为解析器的“结构”是无限大的。但是,我很乐观地认为可能会有某种解决方法,例如转换内部typeParser
,这样我们就不会尝试为它生成帮助文本。
可以对该 Parser 进行的最小修改以使其保留工作帮助文本?
除了无法生成帮助文本之外,如果我想将解析器修改为以下内容(添加默认值,但也允许--nested
自己解析为Nested Character
),这也会挂起,而不是达到默认值:
通过将解析器更改为以下内容,我已经能够解决该问题
要在此解析器中指定 的值Nested (Nested Colour)
,您需要传递--nest 2 --colour
. 这可行,但并不理想,因为我真的很喜欢“多--nesting
参数”命令风格。
haskell - 执行包含多个选项的检查
我有
我想添加一张支票,第一个月不在第二个月之后。显然我不能在OP.ReadM
. 我可以办理登机手续OP.Parser
吗?或者我是否必须在解析后执行检查parserFailure
:
Optparse-applicative: Continuous parsing (ReadM)
?
haskell - optparse-applicative 的(子)命令同义词
我想在我的 Haskell 命令行工具中添加子命令的同义词。例如summarise
,并且summarize
应该产生相同的结果。当然,我可以只添加一个完全独立的命令summarize
,它作为自己的元素出现在--help
. 但也许有更优雅的方式。
这是堆栈脚本中的一个独立示例opt_ex.hs
:
您可以使用./opt_ex.hs greet John
to getHello, John!
和 with ./opt_ex.hs groot John
to get运行它Howdy, John!
。运行./opt_ex.hs
将为您提供以下概述:
什么是最优雅的方式,gruut
在这个例子中添加一个命令,它的行为与 完全一样greet
,但在代码和用户中产生最少的开销?
理想情况下,我想./opt_ex.hs
产生这样的东西: