我正在尝试在我的 ruby 文件中的适当位置添加新行。一些文件的代码如下:
def abc
...
end
def pqr
...
end
我想在适当的地方添加新行,如下所示:
def abc
...
end
def pqr
...
end
使代码更具可读性。我想出的初始正则表达式是基于关键字匹配def.*?def
的开关。但是该正则表达式也匹配已经由空白新行分隔的 def 关键字。有任何想法吗?m
def
您可以执行类似的操作/end\ndef/
(您可能需要使用 \r\n,具体取决于您在编辑器中使用的行结束模式)。
这将匹配一个文字end
,然后是一个换行符,然后是一个文字def
。
只需替换一个额外的换行符,它应该可以正常工作!
试试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