class SolvePb::FileGenerator

Attributes

language[R]
problem[R]

Public Instance Methods

generate(args) click to toggle source
# File lib/solve_pb/file_generator.rb, line 5
def generate(args)
  @problem = ProblemParser.new.parse(args[:url])
  @language = args[:lang]
  if problem
    puts "Preparing workspace"
    prepare_directory
    prepare_readme
    prepare_main_program
    prepare_sample_input
    prepare_sample_output
    download_pb_statement
  end
end

Private Instance Methods

download_pb_statement() click to toggle source
# File lib/solve_pb/file_generator.rb, line 68
def download_pb_statement
  path = File.join(problem.name, "#{problem.name}.pdf")
  unless file_exists?(path)
    download = open(problem.download_pdf)
    IO.copy_stream(download, path)
    puts "\tcreate #{path}"
  end
end
file_exists?(path) click to toggle source
# File lib/solve_pb/file_generator.rb, line 77
def file_exists?(path)
  raise "\tIgnore #{path}. It already exists." if File.exist?(path)
  false
end
get_main_file_name() click to toggle source
# File lib/solve_pb/file_generator.rb, line 53
def get_main_file_name
  return "main.rb" if language == "ruby"
  return "main.cpp" if language == "c++"
end
prepare_directory() click to toggle source
# File lib/solve_pb/file_generator.rb, line 21
def prepare_directory
  puts "\tcreate #{File.join(problem.name, '')}"
  Dir.mkdir(problem.name)
end
prepare_main_program() click to toggle source
# File lib/solve_pb/file_generator.rb, line 26
def prepare_main_program
  main_file_name = get_main_file_name
  main_file_path = File.join(SolvePb.root, "template", language, main_file_name)
  des_path = File.join(problem.name, main_file_name)
  puts "\tcreate #{des_path}"
  FileUtils.cp(main_file_path, des_path)
rescue
  puts language
  puts main_file_name
end
prepare_readme() click to toggle source
# File lib/solve_pb/file_generator.rb, line 58
def prepare_readme
  path = File.join(problem.name, "readme.md")
  unless file_exists?(path)
    open(path, 'w') do |f|
      f.write("[#{problem.name.capitalize} url](#{problem.url})")
    end
    puts "\tcreate #{path}"
  end
end
prepare_sample_input() click to toggle source
# File lib/solve_pb/file_generator.rb, line 37
def prepare_sample_input
  path = File.join(problem.name, "sample.input")
  unless file_exists?(path)
    open(path, 'w') { |f| f.write(problem.sample_input) }
    puts "\tcreate #{path}"
  end
end
prepare_sample_output() click to toggle source
# File lib/solve_pb/file_generator.rb, line 45
def prepare_sample_output
  path = File.join(problem.name, "sample.output")
  unless file_exists?(path)
    open(path, 'w') { |f| f.write(problem.sample_output) }
    puts "\tcreate #{path}"
  end
end