Description:
Merge branch 'master' into codejom (bug fix)
Commit status:
[Not Reviewed]
References:
merge default
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r236:879e1963b565 - - 1 file changed: 2 inserted, 0 deleted

@@ -38,100 +38,102
38 end
38 end
39
39
40 protected
40 protected
41
41
42 def self.long_ext(filename)
42 def self.long_ext(filename)
43 i = filename.index('.')
43 i = filename.index('.')
44 len = filename.length
44 len = filename.length
45 return filename.slice(i..len)
45 return filename.slice(i..len)
46 end
46 end
47
47
48 def extract(tempfile)
48 def extract(tempfile)
49 testdata_filename = save_testdata_file(tempfile)
49 testdata_filename = save_testdata_file(tempfile)
50 ext = TestdataImporter.long_ext(tempfile.original_filename)
50 ext = TestdataImporter.long_ext(tempfile.original_filename)
51
51
52 extract_dir = File.join(GraderScript.raw_dir, @problem.name)
52 extract_dir = File.join(GraderScript.raw_dir, @problem.name)
53 begin
53 begin
54 Dir.mkdir extract_dir
54 Dir.mkdir extract_dir
55 rescue Errno::EEXIST
55 rescue Errno::EEXIST
56 end
56 end
57
57
58 if ext=='.tar.gz' or ext=='.tgz'
58 if ext=='.tar.gz' or ext=='.tgz'
59 cmd = "tar -zxvf #{testdata_filename} -C #{extract_dir}"
59 cmd = "tar -zxvf #{testdata_filename} -C #{extract_dir}"
60 elsif ext=='.tar'
60 elsif ext=='.tar'
61 cmd = "tar -xvf #{testdata_filename} -C #{extract_dir}"
61 cmd = "tar -xvf #{testdata_filename} -C #{extract_dir}"
62 elsif ext=='.zip'
62 elsif ext=='.zip'
63 cmd = "unzip -o #{testdata_filename} -d #{extract_dir}"
63 cmd = "unzip -o #{testdata_filename} -d #{extract_dir}"
64 else
64 else
65 return nil
65 return nil
66 end
66 end
67
67
68 system(cmd)
68 system(cmd)
69
69
70 files = Dir["#{extract_dir}/**/*1*.in"]
70 files = Dir["#{extract_dir}/**/*1*.in"]
71 return nil if files.length==0
71 return nil if files.length==0
72
72
73 return File.dirname(files[0])
73 return File.dirname(files[0])
74 end
74 end
75
75
76 def save_testdata_file(tempfile)
76 def save_testdata_file(tempfile)
77 ext = TestdataImporter.long_ext(tempfile.original_filename)
77 ext = TestdataImporter.long_ext(tempfile.original_filename)
78 testdata_filename = File.join(Dir.tmpdir,"#{@problem.name}#{ext}")
78 testdata_filename = File.join(Dir.tmpdir,"#{@problem.name}#{ext}")
79
79
80 return nil if tempfile==""
80 return nil if tempfile==""
81
81
82 if tempfile.instance_of?(Tempfile)
82 if tempfile.instance_of?(Tempfile)
83 tempfile.close
83 tempfile.close
84 FileUtils.move(tempfile.path,testdata_filename)
84 FileUtils.move(tempfile.path,testdata_filename)
85 else
85 else
86 File.open(testdata_filename, "wb") do |f|
86 File.open(testdata_filename, "wb") do |f|
87 f.write(tempfile.read)
87 f.write(tempfile.read)
88 end
88 end
89 end
89 end
90
90
91 return testdata_filename
91 return testdata_filename
92 end
92 end
93
93
94 def import_test_pairs(dirname)
94 def import_test_pairs(dirname)
95 test_num = 1
95 test_num = 1
96 while FileTest.exists? "#{dirname}/#{test_num}.in"
96 while FileTest.exists? "#{dirname}/#{test_num}.in"
97 in_filename = "#{dirname}/#{test_num}.in"
97 in_filename = "#{dirname}/#{test_num}.in"
98 sol_filename = "#{dirname}/#{test_num}.sol"
98 sol_filename = "#{dirname}/#{test_num}.sol"
99
99
100 break if not FileTest.exists? sol_filename
100 break if not FileTest.exists? sol_filename
101
101
102 puts "#{dirname}"
102 puts "#{dirname}"
103
103
104 test_pair = TestPair.new(:input => open(in_filename).read,
104 test_pair = TestPair.new(:input => open(in_filename).read,
105 :solution => open(sol_filename).read,
105 :solution => open(sol_filename).read,
106 :number => test_num,
106 :number => test_num,
107 :problem => @problem)
107 :problem => @problem)
108 break if not test_pair.save
108 break if not test_pair.save
109
109
110 test_num += 1
110 test_num += 1
111 end
111 end
112 return test_num > 1
112 return test_num > 1
113 end
113 end
114
114
115 def import_problem_description(dirname)
115 def import_problem_description(dirname)
116 html_files = Dir["#{dirname}/*.html"]
116 html_files = Dir["#{dirname}/*.html"]
117 markdown_files = Dir["#{dirname}/*.md"] + Dir["#{dirname}/*.markdown"]
117 markdown_files = Dir["#{dirname}/*.md"] + Dir["#{dirname}/*.markdown"]
118 if (html_files.length != 0) or (markdown_files.length != 0)
118 if (html_files.length != 0) or (markdown_files.length != 0)
119 description = @problem.description || Description.new
119 description = @problem.description || Description.new
120
120
121 if html_files.length != 0
121 if html_files.length != 0
122 filename = html_files[0]
122 filename = html_files[0]
123 description.markdowned = false
123 description.markdowned = false
124 else
124 else
125 filename = markdown_files[0]
125 filename = markdown_files[0]
126 description.markdowned = true
126 description.markdowned = true
127 end
127 end
128
128
129 description.body = open(filename).read
129 description.body = open(filename).read
130 description.save
130 description.save
131 @problem.description = description
131 @problem.description = description
132 @problem.save
132 @problem.save
133 return "\nProblem description imported from #{filename}."
133 return "\nProblem description imported from #{filename}."
134 + else
135 + return ''
134 end
136 end
135 end
137 end
136
138
137 end
139 end
You need to be logged in to leave comments. Login now