2013-03-08 33 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。 。 。