ruby - 将 Ruby 代码转换为字符串

标签 ruby syntax-highlighting

我正在重构一些我没有写的代码,我发现一行看起来像这样(它更长,我在这个例子中只用了一点):

system("rubyw -e \"require 'win32ole'; @autoit=WIN32OLE.new('AutoItX3.Control');")

为了提高可读性,我将其重构为

do_something =
  "rubyw -e \"
    require 'win32ole'
    @autoit=WIN32OLE.new('AutoItX3.Control')"
system do_something

然后我想做一些更改,但由于我正在处理的代码是一个字符串,我失去了语法突出显示、括号匹配和所有这些好东西。

有没有一种简单的方法可以在字符串之外编写一些代码,然后将其转换为字符串?

我已经搜索了网络和 stackoverflow,但找不到答案。

有关更多信息,请查看原始代码 bret/watir (Watir::FileField#set,第 445 行),我的 fork 位于 zeljkofilipin/watir (第 447-459 行)。

最佳答案

您可以使用以下语法:

do_something = <<SOMETHING
  rubyw -e 
  require 'win32ole'
  @autoit=WIN32OLE.new('AutoItX3.Control')
SOMETHING

显然这是一个 heredoc !你可以找到另一个例子 here(doc) .

这并不是说该命令不会因为其中的换行符而感到害怕。但是,您可能会通过 system do_something.split(/\r\n/).join('') 或类似的方式运行它。

关于ruby - 将 Ruby 代码转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/906824/

相关文章:

vim 当前的高亮语言

vim - 有什么简单的方法可以在 Vim 的 ruby​​ 中切换 "do/end"和 "{}"吗?

ruby - 访问救援 block 中的错误消息

ruby-on-rails - Rails 实例(作者:Michael Hartl),第 9.23 课重定向不起作用

ruby - Mechanize links_with 没有正确过滤文本

vim - 从 Mac OS X 通过 SSH 突出显示 PHP 语法

ruby-on-rails - 设计 - 验证时设置范围

javascript - 支持 Smarty 模板标签语法高亮的浏览器内 JavaScript 代码编辑器?

java - Java 中的 SQL 语法荧光笔

colors - zsh 中使用 256 色的语法高亮显示?