我需要验证给定的字符串是否是有效的Ruby语法,通过编程方式使用Ruby。我想我可以这样做的一种方法是在EVAL语句中运行代码,并以这种方式检测语法错误。
有什么更恰当、更安全的方法可以让我做到这一点?
发布于 2018-11-26 06:36:35
将代码字符串设为code。标准的方法是这样做:
begin
RubyVM::InstructionSequence.compile(code)
nil
rescue Exception => e
... # Put code here to return `e` itself, print its message, or whatever you like
end如果引发并被救出错误,该错误将显示语法错误。如果没有(并返回nil ),那么code在语法上是有效的(这并不保证它没有其他类型的错误)。
说这样做很危险等的评论似乎没有道理。
发布于 2018-11-19 17:57:27
我会考虑在浏览器中使用Opal - https://github.com/opal/opal进行检查。
https://stackoverflow.com/questions/53379441
复制相似问题