class UVaTools::Problem
Public Class Methods
new(array)
click to toggle source
# File lib/uva-tools/problem.rb, line 27 def initialize(array) @info = array end
Public Instance Methods
accepted()
click to toggle source
# File lib/uva-tools/problem.rb, line 56 def accepted @info[18] end
dacu()
click to toggle source
# File lib/uva-tools/problem.rb, line 60 def dacu @info[3] end
download()
click to toggle source
# File lib/uva-tools/problem.rb, line 72 def download unless downloaded? FileUtils::mkdir_p dir_name Dir.chdir(dir_name) do uri = URI("https://uva.onlinejudge.org/external/#{number/100}/#{number}.html") source = Net::HTTP.get(uri) if source.include? "URL=p#{number}.pdf" File.open("#{number.to_s}.pdf", 'w') do |pdf| pdf.write open("https://uva.onlinejudge.org/external/#{number/100}/p#{number}.pdf").read end else File.open("#{number.to_s}.html", 'w') { |f| f.write source } source.scan(/#{number}img\d{1,3}\.[a-zA-Z]+/).uniq.each do |picture| File.open(picture, 'wb') do |pic_file| pic_file.write open("https://uva.onlinejudge.org/external/#{number/100}/#{picture}").read end end end end true else false end end
downloaded?()
click to toggle source
# File lib/uva-tools/problem.rb, line 113 def downloaded? File.directory?(dir_name) && (File.exists?("#{dir_name}/#{number}.html") || File.exists?("#{dir_name}/#{number}.pdf")) end
id()
click to toggle source
# File lib/uva-tools/problem.rb, line 31 def id @info[0] end
info()
click to toggle source
# File lib/uva-tools/problem.rb, line 43 def info { id: id, number: number, title: title, run_time: @info[19] } end
number()
click to toggle source
# File lib/uva-tools/problem.rb, line 35 def number @info[1] end
open_problem()
click to toggle source
# File lib/uva-tools/problem.rb, line 117 def open_problem if f_path = path `open #{f_path}` true else puts "Problem not downloaded!" false end end
remove()
click to toggle source
# File lib/uva-tools/problem.rb, line 98 def remove if downloaded? Dir.chdir(dir_name) do Dir.entries('.').each do |file_name| if file_name =~ /^#{number}.*/ && !File.directory?(file_name) File.delete(file_name) end end end true else false end end
submission_info()
click to toggle source
# File lib/uva-tools/problem.rb, line 64 def submission_info { submitted: submitted, accepted: accepted, dacu: dacu } end
submitted()
click to toggle source
# File lib/uva-tools/problem.rb, line 52 def submitted @info[6..18].inject(:+) end
title()
click to toggle source
# File lib/uva-tools/problem.rb, line 39 def title @info[2] end
Private Instance Methods
dir_name()
click to toggle source
# File lib/uva-tools/problem.rb, line 128 def dir_name "#{UVaTools::ROOT_DIR}/#{number/100}" end
path()
click to toggle source
# File lib/uva-tools/problem.rb, line 132 def path if downloaded? "#{dir_name}/#{number}.#{File.exists?("#{dir_name}/#{number}.html") ? 'html' : 'pdf'}" else nil end end