今朝遭遇したのはこちら。次のような CMD パターンで記述された JavaScript ファイルがたくさんあります。
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
奇妙な部分は、コードがその正規表現と一致しないことです。行 2 が返されますnil
。これはうまくいきます:
code = "define(function(require, exports) {\n"
code =~ /^define\(function/ # ==> 0
nil
を使用してコードが読み取られた場合にのみ返されますIO#read
。ただし、文字列の先頭は機能します。
code = File.open('foo.js').read
code =~ /.define\(function/m # ==> 0
code[0] # ==> "" returns an empty string
しかし、^
すべての行頭が一致していませんか?