class Settings

Constants

Credentials

Public Class Methods

new() click to toggle source
# File lib/atcoder_tools/settings.rb, line 8
def initialize
  if File.exist?(".atcoder/settings.yml")
    @settings = YAML.load_file(".atcoder/settings.yml")
  else
    @settings = {}
  end
end

Public Instance Methods

ambiguous_contest(contest) click to toggle source
# File lib/atcoder_tools/settings.rb, line 20
def ambiguous_contest(contest)
  case contest
  when String
    Contest.new(contest)
  when Contest
    contest
  else
    raise ArgumentError, "引数は StringまたはContestです。"
  end
end
contest_language(contest) click to toggle source
# File lib/atcoder_tools/settings.rb, line 60
def contest_language(contest)
  if @settings[ambiguous_contest(contest).name]
    @settings[ambiguous_contest(contest).name]['language']
  else
    language
  end
end
contest_language=(data) click to toggle source

contest, languageの順に代入

# File lib/atcoder_tools/settings.rb, line 69
def contest_language=(data)
  name = ambiguous_contest(data[0]).name
  @settings[name] ||= {}
  @settings[name]['language'] = data[1]
end
credentials() click to toggle source
# File lib/atcoder_tools/settings.rb, line 88
def credentials
  unless @settings.key?('username') && @settings.key?('password')
    raise "先にログインしてください!"
  end
  return Credentials.new(@settings['username'], Base64.decode64(@settings['password']))
end
current_contest() click to toggle source
# File lib/atcoder_tools/settings.rb, line 16
def current_contest
  @settings['current_contest'] && Contest.new(@settings['current_contest'])
end
current_contest=(contest) click to toggle source
# File lib/atcoder_tools/settings.rb, line 31
def current_contest=(contest)
  @settings['current_contest'] = ambiguous_contest(contest).name

end
current_task() click to toggle source
# File lib/atcoder_tools/settings.rb, line 36
def current_task
  current_contest && @settings['current_task'] && Task.new(current_contest, @settings['current_task'])
end
current_task=(task) click to toggle source
# File lib/atcoder_tools/settings.rb, line 40
def current_task=(task)
  case task
  when String
    task_name = task
  when Task
    task_name = task.name
  else
    raise ArgumentError, "引数は StringまたはTaskです。"
  end
  @settings['current_task'] = task_name
end
destroy_credentials!() click to toggle source
# File lib/atcoder_tools/settings.rb, line 83
def destroy_credentials!
  @settings.delete('username')
  @settings.delete('password')
end
language() click to toggle source
# File lib/atcoder_tools/settings.rb, line 52
def language
  @settings['language'] || 'ruby'
end
language=(lang) click to toggle source
# File lib/atcoder_tools/settings.rb, line 56
def language=(lang)
  @settings['language'] = lang
end
password=(password) click to toggle source
# File lib/atcoder_tools/settings.rb, line 75
def password=(password)
  @settings['password'] = Base64.strict_encode64(password)
end
save!() click to toggle source
# File lib/atcoder_tools/settings.rb, line 95
def save!
  @settings['updated_at'] = Time.now
  FileUtils.mkdir_p '.atcoder'
  open('.atcoder/settings.yml' , 'w') {|f| YAML.dump(@settings , f ) }
end
username=(username) click to toggle source
# File lib/atcoder_tools/settings.rb, line 79
def username=(username)
  @settings['username'] = username
end