lib/judge_system.rb in judge_system-1.2.1 vs lib/judge_system.rb in judge_system-1.2.2

- old
+ new

@@ -4,49 +4,36 @@ require "json" require 'timeout' require 'pathname' module JudgeSystem - module Wandbox - module Web - def compile compiler: "", code: "", codes: [], options: "", stdin: "", compiler_option_raw: "", runtime_option_raw: "", save: false - body = { - "code" => code, - "compiler" => compiler, - "codes" => codes, - "options" => options, - "stdin" => stdin, - "compiler-option-raw" => compiler_option_raw, - "runtime-option-raw" => runtime_option_raw, - "save" => save, - } - uri = URI.parse("http://melpon.org/wandbox/api/compile.json") - - request = Net::HTTP::Post.new(uri.request_uri, initheader = { "Content-type" => "application/json" },) - request.body = body.to_json - http = Net::HTTP.new(uri.host, uri.port) - - - http.start do |http| - response = http.request(request) - JSON.parse(response.body) - end - + class WandBox + + def self.compile compiler: "", code: "", stdin: "" + body = { + code: code, + compiler: compiler, + stdin: stdin, + } + uri = URI.parse("http://melpon.org/wandbox/api/compile.json") + request = Net::HTTP::Post.new(uri.request_uri, initheader = { "Content-type" => "application/json" },) + request.body = body.to_json + http = Net::HTTP.new(uri.host, uri.port) + http.start do |http| + response = http.request(request) + JSON.parse(response.body) end - module_function :compile end - end - module Wandbox - def run lang, code, input, time + def self.run lang, code, input, time path = File.expand_path('../', __FILE__ ) sys = File.open("#{path}/compile_systems/#{lang}_system.cpp", "r").read data = nil spliter = "\n<$><*><$>\n" stdin = code + spliter + input + spliter + time.to_s begin - data = Web.compile({ compiler: "gcc-head", code: sys, stdin: stdin }) + data = compile( compiler: "gcc-head", code: sys, stdin: stdin ) rescue return 'RE' end error = data["program_error"] result = data["program_output"] @@ -56,25 +43,30 @@ return "RE" else return result end end - module_function :run - end - - def judge_result lang: "", code: "" , answer: "", stdin: "", time: 100 - output = Wandbox.run lang, code, stdin, time - if output == 'TLE' - return 'TLE' - elsif output == 'RE' - return 'RE' - else - result = output == answer - if result - return 'AC' + private_class_method :compile, :run + public + def self.judge lang, code , answer, stdin, time + output = run lang, code, stdin, time + if output == 'TLE' + return 'TLE' + elsif output == 'RE' + return 'RE' else - return 'WA' + result = output == answer + if result + return 'AC' + else + return 'WA' + end end end end + + def judge_result lang: "", code: "" , answer: "", stdin: "", time: 100 + WandBox.judge lang, code, answer, stdin, time + end + module_function :judge_result end