2012-09-12 59 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個錯誤,但你只會得到第一個,如果你解決首先只有你會得到其他的。我想一些方法來顯示所有的語法錯誤一次> –