2013-03-08 39 views
0

这是我今天上午遇到的。我已经得到了很多的JavaScript文件写在CMD模式是这样的:匹配由IO返回的行的开始处的奇怪行为#阅读

define(function(require, exports) { 
    // code goes here 
}) 

我有一个简单的Ruby脚本来处理这些文件的结果是这样的:

define(['module-a', 'module-b'], function(reuqire, exports) { 
    // code 
}) 

这样,我已经做了它是通过打开这些文件,阅读其内容,看它们是否匹配/^define\(function/,然后替换他们,如果他们这样做:

code = File.open('foo.js').read 
if code =~ /^define\(function/ 
    # do some work 
end 

怪异的一部分是,该代码将不匹配,经常expressi上。第2行返回nil。这将工作:

code = "define(function(require, exports) {\n" 
code =~ /^define\(function/ # ==> 0 

它只是如果代码使用IO#read读返回nil。然而字符串的开始工作:

code = File.open('foo.js').read 
code =~ /.define\(function/m # ==> 0 

code[0] # ==> "" returns an empty string 

但不^匹配所有的行开始?

+0

为我工作。什么'IO#read'返回? – halfelf 2013-03-08 05:05:59

+0

@halfelf成功返回文件内容 – nil 2013-03-08 05:09:18

+0

随着Ruby 1.9.3,也适用于我。 – toch 2013-03-08 08:19:28

回答

0

在“define”之前检查\ n以外的空格吗?特别是\ r。 。 。