我想要一个Ruby方法或一个正则表达式,让我将一串命令行参数分成一个类似ARGV的数组.我问的问题类似于这个问题,但在Ruby中.
我正在为使用Trollop处理命令行输入的Ruby程序编写单元测试(尽管这个问题对于任何其他选项解析器都是相同的).
我想测试的方法如下所示:
def parse_args(args)
Trollop::options(args) do
# ... parse options based on flags
end
end
Run Code Online (Sandbox Code Playgroud)
在我的节目中,我打电话parse_args(ARGV).在我的测试中,我认为我可以在空格中传递一个字符串,但这不是ARGV的行为.比较以下内容:
./argv_example.rb -f -m "Hello world" --extra-args "-vvv extra verbose"
=> ["-f", "-m", "Hello world", "--extra-args", "-vvv extra verbose"]
'-f -m "Hello world" --extra-args "-vvv extra verbose"'.split
=> ["-f", "-m", "\"Hello", "world\"", "--extra-args", "\"-vvv", "extra", "verbose\""]
Run Code Online (Sandbox Code Playgroud) 我一直在试图解决这个问题.采用以下HTML正文:
<body>
<div id="project">
<h1>Hi</h1>
<h2>Hello</h2>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
以下jQuery代码:
$(function(){
var h = $('#project').html();
$('#project').remove();
$(h).hide().appendTo('body');
alert("Created HTML, hide, and appended!");
});
Run Code Online (Sandbox Code Playgroud)
该$(h).hide()部分导致jQuery在Safari 4和Firefox 3.5中引发异常.
Safari: TypeError: Result of expression 'this[a].style' [undefined] is not an object.
Firefox: uncaught exception: [Exception... "Could not convert JavaScript argument arg 0" nsresult: ...]
当我将HTML更改为仅包含两个标题中的一个时(如果从HTML中删除<h1>或删除<h2>,脚本将成功运行.为什么会这样?
要亲自尝试,请访问http://jsbin.com/avisi/edit
编辑:我实际上并没有尝试从DOM中删除元素并通过复制HTML重新插入它.这只是我在更复杂的代码中遇到的错误的测试用例,我试图理解为什么会出现这个错误.我同意,如果我想完成这里显示的内容,我会使用类似的东西$('#project').remove().children().appendTo('body')
一旦我安装了 Ruby gem,我就知道我可以使用gem contents <my_gem>. 但是如何在不安装 gem 的情况下查看它的内容呢?