ユーザーが入力したRubyスクリプトを読み取り、それを一時ファイルに保存し、その一時ファイルをに渡してjruby -c temp_file
構文検証を行うコードを記述しようとしています。
エラーが見つかった場合は、エラーと、ユーザーが入力した行番号のスクリプトを表示する必要があります。
どうすればいいですか?
ユーザーが入力したRubyスクリプトを読み取り、それを一時ファイルに保存し、その一時ファイルをに渡してjruby -c temp_file
構文検証を行うコードを記述しようとしています。
エラーが見つかった場合は、エラーと、ユーザーが入力した行番号のスクリプトを表示する必要があります。
どうすればいいですか?
構文エラーがある場合は、失敗した行番号が表示されます。
blah.rb:2: syntax error, unexpected '.'
したがって、スクリプトを改行(\n
)で分割すると、エラー行になります(もちろん1つのインデックスに基づいています)。
あなたが達成しようとしていることを正しく理解している場合は、JRuby でjruby-parser
(install gem install jruby-parser
) を使用して、エラーが発生した行番号を見つけることができます。
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