1

Ruby ファイルの適切な場所に新しい行を追加しようとしています。一部のファイルには、次のようなコードが含まれています。

def abc
  ...
end
def pqr
  ...
end

以下のような適切な場所に新しい行を追加したい:

def abc
  ...
end  

def pqr
  ...
end

コードがより読みやすくなるように。私が思いついた最初の正規表現は、キーワードに基づいて一致def.*?defするスイッチです。しかし、その正規表現は、すでに空白の改行で区切られている def キーワードにも一致します。何か案は?mdef

4

2 に答える 2

4

You could do something like /end\ndef/ (you might need to use \r\n, depending on the line ending mode you are using in your editor).

This will match a literal end followed by a line return and immediately afterwards, a literal def.

Simply substitute in an extra line break, and it should work fine!

于 2013-04-21T21:48:14.087 に答える
1

Enumerable#slice_beforeあなたのラインを試してみてください:

File.readlines('foo.rb').slice_before(/^\s*def\b/).flat_map do |group|
  group << "\n" if group.last =~ /^\s*end\b/
  group
end.join
于 2013-04-21T21:52:15.613 に答える