class AtCoderFriends::Emitter

emits source skeletons and sample input/output(s) of a problem to the specified directory.

Public Class Methods

new(ctx) click to toggle source
# File lib/at_coder_friends/emitter.rb, line 11
def initialize(ctx)
  @src_dir = ctx.path_info.src_dir
  @smp_dir = ctx.path_info.smp_dir
end

Public Instance Methods

emit(pbm) click to toggle source
# File lib/at_coder_friends/emitter.rb, line 16
def emit(pbm)
  pbm.samples.each { |smp| emit_sample(pbm, smp) }
  pbm.sources.each { |src| emit_source(pbm, src) }
end
emit_sample(pbm, smp) click to toggle source
# File lib/at_coder_friends/emitter.rb, line 21
def emit_sample(pbm, smp)
  makedirs_unless @smp_dir
  smp_file = format(
    '%<q>s_%<n>03d.%<ext>s', q: pbm.q, n: smp.no, ext: smp.ext
  )
  smp_path = File.join(@smp_dir, smp_file)
  File.write(smp_path, smp.txt)
  puts smp_file
end
emit_source(pbm, src) click to toggle source
# File lib/at_coder_friends/emitter.rb, line 31
def emit_source(pbm, src)
  makedirs_unless @src_dir
  src_file = format('%<q>s.%<ext>s', q: pbm.q, ext: src.ext)
  src_path = File.join(@src_dir, src_file)
  File.write(src_path, src.txt)
  puts src_file
end