hflags-0.4.3:命令行标志解析器,与谷歌的gflags非常相似

许可证阿帕奇2.0
安全哈斯克尔
语言哈斯克尔2010

HF标志

目录

描述

这个HF标志库支持轻松定义命令行标志,重新实现谷歌的想法gflags标志(http://code.google.com/p/gflags网站).

命令行标志可以在顶层的任何文件中声明,使用定义标志。在运行时,实际值被分配给顶层标志_名称常数。那些可以纯粹使用贯穿整个计划。

在开始时主要的功能,$initH标志“程序描述“必须调用以初始化标志。所有标志将初始化可通过导入传递访问的主要的这意味着,任何Haskell包都可以很容易地使用定义命令行标志HF标志。此功能是证明人http://github.com/errge/hflags/blob/master/examples/ImportExample.hshttp://github.com/errge/hflags/tree/master/examples/package.

一个简单的示例(更多信息请参见http://github.com/errge/hflags/tree/master/examples目录):

#!/usr/bin/env runhaskell{-#LANGUAGE模板Haskell#-}导入HFlagsdefineFlag“name”“Indiana Jones”“问候对象”defineFlag“r:repeat”(3+4::Int)“重复消息的次数。”main=do s<-$initHFlags“简单程序v0.1”sequence_$replicate flags_repeat问候语putStrLn$“您的附加参数是:”++显示sputStrLn$“与:”++show HFlags.arguments相同哪里greetin=putStrLn$“你好”++flags_name++“很高兴见到你!”

初始化HFlags时间,图书馆也会尝试收集环境变量。HFLAGS_verbose=真等于指定--verbose=真在命令行上。这个环境功能仅适用于长选项,用户必须指定值,即使对于布尔第条。

从版本0.2开始,您不能将initHFlags与程序描述放在括号中。只是 $initH滞后,它更干净了。

简介

标志的定义

定义自定义标志::字符串->实验Q->字符串->ExpQ公司->ExpQ公司->字符串->[12月]来源 #

定义标志的最灵活方式。有关示例,请参见http://github.com/errge/hflags/blob/master/examples/ComplexExample.hs.对于大多数事情定义标志应该足够了。

参数:

  • 标志的名称(l: 长语法(如果您想使用短选项)对于该标志),
  • 引用表达式并键入带符号的默认值,
  • 识别参数类型的帮助字符串(例如INTLIST),
  • 读取函数,引用表达式,
  • show函数,带引号的表达式,
  • 标志的帮助字符串。

定义EQ标志::字符串->ExpQ公司->字符串->字符串->[12月]来源 #

这只是转发给定义自定义标志具有[|阅读|][|演出|]。适用于类型不是实例的标志属于标志类型。有关示例,请参见http://github.com/errge/hflags/blob/master/examples/ComplexExample.hs.

参数:

  • 标志的名称(l: 长语法(如果您想使用短选项)对于此标志),
  • 引用表达式并键入带符号的默认值,
  • 识别参数类型的帮助字符串(例如INTLIST),
  • 标志的帮助字符串。

标志类型t吨哪里 来源 #

类型的类别定义标志支持语法。

最小完整定义

定义标志

方法

定义标志::字符串->t->字符串->[12月]来源 #

这个定义标志函数定义一个新标志。

参数:

  • 标志的名称(l: 长语法(如果您想使用短选项)对于此标志),,
  • 默认值,
  • 标志的帮助字符串。

在运行时初始化标志

初始化HFlags::ExpQ公司 来源 #

在执行其他操作之前,必须从主服务器调用:

main=do args<-$initHFlags“简单程序v0.1”...

从版本0.2开始,您不能将initHFlags与程序描述放在括号中。只是 $initH标记,它更干净了。

在内部,它使用Template Haskell技巧收集所有Flag类的实例,然后生成对初始化标志从这些数据中收集到适当的数据实例添加到列表中。

拼接后类型为字符串->IO[String].

initHFlags相关默认值::ExpQ公司 来源 #

与initHFlags相同,但可以引入基于用户提供的标志值的编程默认值。

第二个参数必须是获得以下内容的函数主义者:

  • 默认值,
  • 来自HFLAGS_*环境变量的值,
  • 命令行选项。

必须返回包含其他默认值的列表将覆盖默认标志值(但不覆盖用户提供的值:环境或命令行)。

拼接后类型为字符串->依赖默认值->IO[String].哪里:

  • 类型AList=[(String,String)]
  • type DependentDefaults=AList->AList->AList>AList

为了便于访问参数,在调用initHFlags之后

论据:: [字符串]来源 #

包含命令行的非解析、非选项部分,论据。只能在以下情况下使用初始化HFlags已被调用。

未定义的选项:: [字符串]来源 #

包含命令行的非解析选项部分,如果--取消确定正在使用中。当你必须通过考试时,这很有用其他库的这些选项,例如。标准GTK公司.可以仅在之后使用初始化HFlags已被调用。

对于调试,不应在生产代码中使用

标志哪里 来源 #

程序支持的每个标志都必须通过新的幻影数据类型和该数据类型的Flag实例。

但库的用户不应该担心这个类或这些函数背后的实现细节,只需使用定义标志用于定义新标志的模板Haskell函数。

最小完整定义

获取标记数据

方法

获取标记数据::a->FlagData来源 #

数据 制作此孤儿 来源 #

这是一个临时的黑客程序,用于强制显示内部的旗帜库,通过使定义标志的模块成为孤立的。对于用法示例,签出http://github.com/errge/hflags/blob/master/examples/package/Tup.hs.已经建议对GHC 7.8进行适当修复,请参见http://ghc.haskell.org/trac/ghc/ticket/7867.

建造师

MakeThis孤儿 

全球HFlags::IORef(IORef)(也许 吧(地图 字符串 字符串))来源 #

全球IORef(IORef)用于以下人员之间的通信初始化HFlags旗帜_*。这是标志名和当前值之间的映射。

全局未定义选项::IORef(IORef)(也许 吧[字符串])来源 #

一个全球性的IORef(IORef)为了方便访问未定义的选项,如果--取消确定使用。如果必须将这些选项传递给另一个库,例如。标准GTK公司.