Žel*_*pin 4 ruby syntax-highlighting
我正在重构一些我没写过的代码,我找到了一条看起来像这样的行(它更长,我在这个例子中只使用了一点):
system("rubyw -e \"require 'win32ole'; @autoit=WIN32OLE.new('AutoItX3.Control');")
Run Code Online (Sandbox Code Playgroud)
为了提高可读性,我重构了它
do_something =
"rubyw -e \"
require 'win32ole'
@autoit=WIN32OLE.new('AutoItX3.Control')"
system do_something
Run Code Online (Sandbox Code Playgroud)
然后我想做一些更改,但由于我正在处理的代码是一个字符串,我失去语法高亮,括号匹配和所有好东西.
是否有一种简单的方法可以在字符串之外编写一些代码,然后将其转换为字符串?
我搜索了网络和stackoverflow,但找不到答案.
有关更多信息,请查看bret/watir上的原始代码(Watir :: FileField#set,第445行),以及zeljkofilipin/watir上的fork(第447-459行).
您可以使用以下语法:
do_something = <<SOMETHING
rubyw -e
require 'win32ole'
@autoit=WIN32OLE.new('AutoItX3.Control')
SOMETHING
Run Code Online (Sandbox Code Playgroud)
显然这是一个heredoc!你可以在这里找到另一个例子(doc).
这并不是说该命令不会因为在那里有换行而吓坏了.但是你可能会用它system do_something.split(/\r\n/).join('')
或类似的东西来运行它.
好吧,您可以将代码放入外部文件并加载它.
或者,如果我没记错的话,Ruby文件可能包含以下DATA
部分:
# Sample ruby file:
puts DATA.readline()
__END__
foo bar
Run Code Online (Sandbox Code Playgroud)
这应该打印" foo bar
".您可以将代码放在数据段中.运气好的话,您的编辑器仍然会为DATA
细分市场提供语法高亮显示.