2012-09-12 20 views
0

我想编写代码来读取用户输入并将其存储在一个临时文件中的Ruby脚本显示,那么临时文件传递给jruby -c temp_file做语法验证。阅读文件的内容,并与行号上的观点

如果发现任何错误,我必须表明的错误,通过与行号用户输入的脚本一起。

我该怎么做?

+0

我是想这样的事情 File.open( “newfile,txt”,“w”)do | out | File.open(“myfile.txt”)。each_with_index do | line,index | 了<<“#{}指数:#{}行” 结束 结束 –

+0

请编辑您的问题,并追加代码示例所以它的可读性。 –

回答

0

如果你看一下失败的行号语法错误:

blah.rb:2: syntax error, unexpected '.'

所以才拆的换行符(\n)脚本和多数民众赞成你的错误行(校本课程的1个指数)。

+0

好,但我得到了一些jQuery插件做我试图通过你给出的上述方法相同,插件名称是jquerylinedtextarea(http://alan.blog-city.com/jquerylinedtextarea.htm) –

0

如果我理解正确你想达到什么目的,你可以使用jruby-parser(安装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 
+0

嗨, ,但我收到以下错误 NoMethodError(未定义的方法'位置”的#): –

+0

@DeanM你有导致的错误,所以我们可以重现解析脚本的例子吗? –

+0

我尝试下面的代码,它为我工作,现在我得到的唯一的问题是它给我错误一个接一个让我们说在脚本中有3个错误,但你只会得到第一个,如果你解决首先只有你会得到其他的。我想一些方法来显示所有的语法错误一次> –