#arguments-parser #pair #flags #syntax #basic #complete #gnu-style

argsyn

GNU风格参数语法的完整实现

3个版本

0.1.2 2023年7月23日
0.1.1 2023年7月22日
0.1.0 2023年7月22日

#33 in #complete

GPL-3.0-or-later

13KB
124 行代码,不包括注释

argsyn,一个GNU风格的语法参数解析器

本库提供了GNU风格参数解析的完整实现,如
https://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html

参数根据GNU风格被转换为基本类型、标志、对和几种其他类型。以下是一个将参数序列转换为指定为短对的“xy”的视觉示例

$ program arg1 -abcx12 -y 3 --long --key=value - arg2 -- -kh --ignore
  |       |     ||||    |     |      |         | |    |  |   |
  Basic(program)||||    |     |      |         | |    |  Basic(-kh)
          Basic(arg1)   |     |      |         | |    |      Basic(--ignore)
                Flag(a) |     |      |         | |    |
                 Flag(b)|     |      |         | |    |
                  Flag(c)     |      |         | |    |
                   Pair(x,12) |      |         | |    |
                        Pair(y,3)    |         | |    |
                              Flag(long)       | |    |
                                     Pair(key,value)  |
                                               Stdin  |
                                                 Basic(arg2)
                                                      Done

在Rust中,要打印所有解析的参数,就像这样简单

for opt in std::env::args().opts("xy") {
  println!("{:?}", opt.simplify());
}

无运行时依赖