Sha256: 83f3f3f8167be0aecaf2fdb832f41fef7284303655c639cb85a03f9c960c66e1

Contents?: true

Size: 1.51 KB

Versions: 2

Compression:

Stored size: 1.51 KB

Contents

require 'clicoder/site_base'
require 'clicoder/config'

module Clicoder
  class AOJ < SiteBase

    def initialize(problem_number)
      config.local['problem_number'] = problem_number
      @problem_id = "%04d" % problem_number
    end

    def submit
      submit_url = 'http://judge.u-aizu.ac.jp/onlinejudge/servlet/Submit'
      post_params = {
        userID: config.get('aoj', 'user_id'),
        password: config.get('aoj', 'password'),
        problemNO: @problem_id,
        language: ext_to_language_name(File.extname(detect_main)),
        sourceCode: File.read(detect_main),
        submit: 'Send'
      }
      response = Net::HTTP.post_form(URI(submit_url), post_params)
      return response.body !~ /UserID or Password is Wrong/
    end

    def open_submission
      Launchy.open('http://judge.u-aizu.ac.jp/onlinejudge/status.jsp')
    end

    def login
      # no need to login for now
      Mechanize.start do |m|
        yield m
      end
    end

    def site_name
      'aoj'
    end

    def problem_url
      "http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=#{@problem_id}"
    end

    def description_xpath
      '//div[@class="description"]'
    end

    def inputs_xpath
      '//*[self::pre or self::div/pre][preceding-sibling::*[self::h2 or self::h3][1][text()="Sample Input"]]'
    end

    def outputs_xpath
      '//*[self::pre or self::div/pre][preceding-sibling::*[self::h2 or self::h3][text()="Output for the Sample Input"]]'
    end

    def working_directory
      @problem_id
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
clicoder-0.0.6 lib/clicoder/sites/aoj.rb
clicoder-0.0.5 lib/clicoder/sites/aoj.rb