代码之家  ›  专栏  ›  技术社区  ›  Reactormonk

使用默认值和标志分析参数

  •  0
  • Reactormonk  · 技术社区  · 14 年前

    我有一个红宝石箱,里面有一些论点,也就是 -s , -c -r (scrape、create和run的缩写)。现在,我想设置一些默认值来清除和创建( '.' 在这两种情况下),但如果我使用 :default 在特罗洛普,无论争论的焦点在哪里,我都无法核实。

    project --scrape
    

    应等于

    project --scrape .
    

    如何做到这一点?

    在这期间,我该怎么做

    project target
    

    相当于

    project --run target
    

    ?

    1 回复  |  直到 14 年前
        1
  •  0
  •   bta    14 年前

    你可以修改 ARGV 在Trollop处理之前。您最好的选择可能是扫描输入参数,应用一些基本的转换,然后运行trolop。

    例如:

    args = ARGV.split
    idx = args.index '--scrape'
    if idx != nil
        if idx < args.length
            if args[idx + 1][0..1] == '--'
                args=args[0..idx] + ['.'] + args[idx+1..-1]
            end
        else
            if args[idx + 1][0..1] == '--'
                args << '.'
            end
        end
    end
    

    此代码段应检查 --scrape 后面没有参数,并添加一个 '.' 那样的话。你可以做一些类似于检查省略的 --run 参数。完成修改后,使用 args.join(' ') 把参数放回一个字符串中。将此新字符串分配给 阿尔加夫 然后松开Trollop。