- $meta = job_inmeta $job;
- if (job_problem $job) {
- local $_ = job_problem $job;
- my $pbmeta = problem_meta;
- my %files = exists $meta->{files} ? %{$meta->{files}} : ();
- $meta = {
- %$meta,
- problem => $_,
- (defined problem_generator() ? (generator => problem_generator) : ()),
- (defined problem_runner() ? (runner => problem_runner) : ()),
- (defined problem_judge() ? (judge => problem_judge) : ()),
- (defined problem_testcnt() ? (testcnt => problem_testcnt) : ()),
- (defined problem_timeout() ? (timeout => problem_timeout) : ()),
- (defined problem_olimit() ? (olimit => problem_olimit) : ()),
- %$pbmeta
- };
- $meta->{files} = {%files, %{$pbmeta->{files}}} if exists $pbmeta->{files};
- }
+ $meta = {
+ problem => $jobr->problem->id,
+ files => {
+ prog => {
+ name => 'prog.' . $jobr->extension,
+ format => $jobr->format,
+ content => $jobr->source,
+ },
+ },
+ map { $_ => $jobr->problem->get_column($_) } qw/generator runner judge testcnt timeout olimit/
+ };
+ $meta->{tests} = decode_json $jobr->problem->tests if $meta->{runner} eq 'File';
+
+ $meta->{files}{ver} = {
+ name => 'ver.' . FORMAT_EXTENSION->{$jobr->problem->verformat},
+ format => $jobr->problem->verformat,
+ content => $jobr->problem->versource,
+ } if $jobr->problem->verformat;