我正在尝试编写代码来读取用户输入的 Ruby 脚本并将其存储在临时文件中,然后将该临时文件传递jruby -c temp_file
给进行语法验证。
如果发现任何错误,我必须显示错误以及用户输入的带有行号的脚本。
我该怎么做?
我正在尝试编写代码来读取用户输入的 Ruby 脚本并将其存储在临时文件中,然后将该临时文件传递jruby -c temp_file
给进行语法验证。
如果发现任何错误,我必须显示错误以及用户输入的带有行号的脚本。
我该怎么做?
如果我正确理解您要实现的目标,您可以将jruby-parser
(install gem install jruby-parser
) 与 JRuby 一起使用来查找发生错误的行号:
require 'jruby-parser'
# Read script file into a String
script = File.open('hello.rb', 'r').read
begin
JRubyParser.parse(script)
rescue Exception => e
# Display line number
puts e.position.start_line
# Display error message
puts e.message
end
如果存在语法错误,您会看到失败的行号:
blah.rb:2: syntax error, unexpected '.'
因此,只需在换行符 ( ) 上拆分您的脚本\n
,这就是您的错误行(当然基于 1 个索引)。