Sha256: 71eb174a4f77bfeb2e9eee4056112a15eb8e290140546802ee2a1551c9b42e4b
Contents?: true
Size: 1.64 KB
Versions: 3
Compression:
Stored size: 1.64 KB
Contents
require 'clicoder/site_base' require 'clicoder/config' require 'mechanize' module Clicoder class AtCoder < SiteBase def initialize(contest_id, task_id) config.local['contest_id'] = contest_id config.local['task_id'] = task_id @contest_id = contest_id @task_id = task_id end def submit login do |mechanize, contest_page| problem_page = mechanize.get(problem_url) submit_page = problem_page.link_with(href: /submit/).click submit_page.form_with(action: /submit/) do |f| f.field_with(name: 'source_code').value = File.read(detect_main) end.click_button end end def open_submission Launchy.open("http://#{@contest_id}.contest.atcoder.jp/submissions/me") end def login Mechanize.start do |m| login_page = m.get("http://#{@contest_id}.contest.atcoder.jp/login") contest_home_page = login_page.form_with(action: '/login') do |f| f.field_with(name: 'name').value = config.get('atcoder', 'user_id') f.field_with(name: 'password').value = config.get('atcoder', 'password') end.click_button yield m, contest_home_page end end def site_name 'atcoder' end def problem_url "http://#{@contest_id}.contest.atcoder.jp/tasks/#{@task_id}" end def description_xpath '//div[@id="task-statement"]' end def inputs_xpath '//pre[preceding-sibling::h3[1][contains(text(), "入力例")]]' end def outputs_xpath '//pre[preceding-sibling::h3[1][contains(text(), "出力例")]]' end def working_directory @task_id end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
clicoder-0.0.6 | lib/clicoder/sites/atcoder.rb |
clicoder-0.0.5 | lib/clicoder/sites/atcoder.rb |
clicoder-0.0.4 | lib/clicoder/sites/atcoder.rb |