diff --git a/root/textcode.rb b/root/textcode.rb index 981321e..94ff121 100755 --- a/root/textcode.rb +++ b/root/textcode.rb @@ -6,19 +6,30 @@ require'open3' require'sqlite3' require'timeout' +require'csv' c = CGI.new(:accept_charset => "UTF-8") begin -Timeout.timeout(2){ +Timeout.timeout(0.1){ print"Content-type: text/html; charset=utf-8\n\n" coderead = c["example"] namae = c["name"] ans = c["ans"].delete("\r") +newans = ans.strip + +if /system|exec|open/ =~ coderead + file = File.open("no.txt", "r") + puts file.read + file.close + exit +end cmd = "ruby -Ku -e '#{coderead}'" o,e,s = Open3.capture3(cmd) #o,e,s = 実行結果、エラー文、プロセス? +newo = o.strip + print < @@ -32,32 +43,64 @@ + +
+

結果画面

+
+ + EOF - -puts("

入力したコード

") +puts("
") +puts("

入力したコード

") printf("", coderead) +puts("
") - -puts("

実行結果

") +puts("
") +puts("

実行結果

") puts("
") printf("
%s
", o) #evalでRubyコードとして読み込む puts("
") +puts("
") -if ans == o - puts("

sucsess!!おめでとう!!

") + +puts("
") +if newans == newo + puts("

sucsess!!

") else - puts("

no!!!実行結果が違います

") - if e != "" - puts("

エラー文

") - printf("

%s

\n", e) - else - puts("

エラー文は出てないよ!文字が間違っていたりしないかな

") + puts("

NO!!!実行結果が違います

") +end + +if e != "" + puts("

エラー文

") + printf("

%s

\n", e) + remess = e.split(" ") + open("err.csv", "r") do |f| + while line = f.gets + if /^#/ =~ line + next + elsif /(.+),(.+)/ =~ line + for i in 0..remess.length + if remess[i].to_s.include?($1) + printf("

[%s]→%s

\n", $1, $1 ,$2) + end + end + end + end end + +else + print("

エラー文はないよ!

") end +puts("
") + +puts("
") puts("エディタ画面へ戻る") +puts("
") + puts("\n") + } rescue Timeout::Error file = File.open("errormes.txt", "r")