at_coder_friends 0.6.2 → 0.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -2
  3. data/.travis.yml +2 -2
  4. data/CHANGELOG.md +53 -0
  5. data/Gemfile.lock +32 -36
  6. data/README.md +1 -1
  7. data/at_coder_friends.gemspec +5 -7
  8. data/config/default.yml +146 -72
  9. data/docs/CONFIGURATION.md +224 -140
  10. data/lib/at_coder_friends.rb +3 -0
  11. data/lib/at_coder_friends/cli.rb +8 -0
  12. data/lib/at_coder_friends/config_loader.rb +11 -3
  13. data/lib/at_coder_friends/context.rb +10 -6
  14. data/lib/at_coder_friends/emitter.rb +2 -2
  15. data/lib/at_coder_friends/generator/base.rb +42 -0
  16. data/lib/at_coder_friends/generator/cxx_builtin.rb +196 -143
  17. data/lib/at_coder_friends/generator/main.rb +8 -2
  18. data/lib/at_coder_friends/generator/ruby_builtin.rb +97 -51
  19. data/lib/at_coder_friends/parser/constraints.rb +1 -0
  20. data/lib/at_coder_friends/parser/input_format.rb +389 -188
  21. data/lib/at_coder_friends/parser/input_type.rb +92 -0
  22. data/lib/at_coder_friends/parser/main.rb +1 -0
  23. data/lib/at_coder_friends/parser/modulo.rb +1 -1
  24. data/lib/at_coder_friends/parser/sections.rb +3 -3
  25. data/lib/at_coder_friends/path_info.rb +51 -0
  26. data/lib/at_coder_friends/path_util.rb +0 -31
  27. data/lib/at_coder_friends/problem.rb +81 -6
  28. data/lib/at_coder_friends/scraping/agent.rb +11 -2
  29. data/lib/at_coder_friends/scraping/custom_test.rb +5 -6
  30. data/lib/at_coder_friends/scraping/submission.rb +6 -7
  31. data/lib/at_coder_friends/scraping/tasks.rb +8 -3
  32. data/lib/at_coder_friends/test_runner/base.rb +17 -4
  33. data/lib/at_coder_friends/test_runner/judge.rb +7 -9
  34. data/lib/at_coder_friends/test_runner/sample.rb +2 -4
  35. data/lib/at_coder_friends/verifier.rb +2 -3
  36. data/lib/at_coder_friends/version.rb +1 -1
  37. data/templates/{cxx_builtin_interactive.cxx → cxx_builtin.cxx.erb} +26 -4
  38. data/templates/{ruby_builtin_interactive.rb → ruby_builtin.rb.erb} +17 -3
  39. metadata +11 -17
  40. data/tasks/regression/check_const.rake +0 -136
  41. data/tasks/regression/check_diff.rake +0 -30
  42. data/tasks/regression/check_fmt.rake +0 -42
  43. data/tasks/regression/check_parse.rake +0 -70
  44. data/tasks/regression/regression.rb +0 -72
  45. data/tasks/regression/section_list.rake +0 -53
  46. data/tasks/regression/setup.rake +0 -48
  47. data/templates/cxx_builtin_default.cxx +0 -26
  48. data/templates/ruby_builtin_default.rb +0 -7
@@ -29,91 +29,165 @@ generators:
29
29
  - RubyBuiltin
30
30
  - CxxBuiltin
31
31
  ext_settings:
32
- 'awk':
33
- submit_lang: '3506' # Awk (mawk)
34
- 'bf':
35
- submit_lang: '3507' # Brainfuck
36
- 'c':
37
- submit_lang: '3002' # C (GCC)
32
+ 'awk': # Awk (mawk)
33
+ submit_lang:
34
+ - '4009'
35
+ - '3506'
36
+ 'bf': # Brainfuck
37
+ submit_lang:
38
+ - '4062'
39
+ - '3507'
40
+ 'c': # C (GCC)
41
+ submit_lang:
42
+ - '4001'
43
+ - '3002'
38
44
  test_cmd:
39
45
  default: '"{dir}/{base}"'
40
46
  windows: '"{dir}/{base}.exe"'
41
- 'cbl':
42
- submit_lang: '3526' # COBOL - Free
43
- 'clj':
44
- submit_lang: '3007' # Clojure
45
- 'cr':
46
- submit_lang: '3511' # Crystal
47
- 'cs':
48
- submit_lang: '3006' # C# (Mono)
47
+ 'cbl': # COBOL - Free
48
+ submit_lang:
49
+ - '4061'
50
+ - '3526'
51
+ 'clj': # Clojure
52
+ submit_lang:
53
+ - '4013'
54
+ - '3007'
55
+ 'cr': # Crystal
56
+ submit_lang:
57
+ - '4014'
58
+ - '3511'
59
+ 'cs': # C# (Mono-mcs)
60
+ submit_lang:
61
+ - '4011'
62
+ - '3006'
49
63
  test_cmd:
50
64
  default: 'mono "{dir}/{base}.exe"'
51
65
  windows: '"{dir}/{base}.exe"'
52
- 'cxx':
53
- submit_lang: '3003' # C++14 (GCC)
66
+ 'cxx': # C++ (GCC)
67
+ submit_lang:
68
+ - '4003'
69
+ - '3003'
54
70
  test_cmd:
55
71
  default: '"{dir}/{base}"'
56
72
  windows: '"{dir}/{base}.exe"'
57
- 'd':
58
- submit_lang: '3009' # D (DMD64)
59
- 'f90':
60
- submit_lang: '3012' # Fortran (gfortran)
61
- 'fs':
62
- submit_lang: '3512' # F# (Mono)
63
- 'go':
64
- submit_lang: '3013' # Go
65
- 'hs':
66
- submit_lang: '3014' # Haskell (GHC)
67
- 'java':
68
- submit_lang: '3016' # Java8 (OpenJDK)
73
+ 'd': # D (DMD64)
74
+ submit_lang:
75
+ - '4015'
76
+ - '3009'
77
+ 'dart': # Dart
78
+ submit_lang: '4018'
79
+ 'f90': # Fortran (gfortran)
80
+ submit_lang:
81
+ - '4025'
82
+ - '3012'
83
+ 'fs': # F# (Mono)
84
+ submit_lang:
85
+ - '4023'
86
+ - '3512'
87
+ 'go': # Go
88
+ submit_lang:
89
+ - '4026'
90
+ - '3013'
91
+ 'hs': # Haskell (GHC)
92
+ submit_lang:
93
+ - '4027'
94
+ - '3014'
95
+ 'java': # Java (OpenJDK)
96
+ submit_lang:
97
+ - '4005'
98
+ - '3016'
69
99
  test_cmd:
70
100
  default: 'java -cp "{dir}" Main'
71
- 'jl':
72
- submit_lang: '3518' # Julia
73
- 'js':
74
- submit_lang: '3017' # JavaScript (node.js)
75
- 'kt':
76
- submit_lang: '3523' # Kotlin
77
- 'lisp':
78
- submit_lang: '3008' # Common Lisp
79
- 'lua':
80
- submit_lang: '3515' # LuaJIT
81
- 'm':
82
- submit_lang: '3519' # Octave
83
- 'ml':
84
- submit_lang: '3018' # OCaml
85
- 'nim':
86
- submit_lang: '3520' # Nim
87
- 'pas':
88
- submit_lang: '3019' # Pascal (FPC)
89
- 'php':
90
- submit_lang: '3524' # PHP7
91
- 'pl':
92
- submit_lang: '3020' # Perl
93
- 'py':
94
- submit_lang: '3023' # Python3
95
- 'rb':
96
- submit_lang: '3024' # Ruby
101
+ 'jl': # Julia
102
+ submit_lang:
103
+ - '4031'
104
+ - '3518'
105
+ 'js': # JavaScript (node.js)
106
+ submit_lang:
107
+ - '4030'
108
+ - '3017'
109
+ 'kt': # Kotlin
110
+ submit_lang:
111
+ - '4032'
112
+ - '3523'
113
+ 'lisp': # Common Lisp
114
+ submit_lang:
115
+ - '4038'
116
+ - '3008'
117
+ 'lua': # LuaJIT
118
+ submit_lang:
119
+ - '4034'
120
+ - '3515'
121
+ 'm': # Octave
122
+ submit_lang:
123
+ - '4040'
124
+ - '3519'
125
+ 'ml': # OCaml
126
+ submit_lang:
127
+ - '4039'
128
+ - '3018'
129
+ 'nim': # Nim
130
+ submit_lang:
131
+ - '4036'
132
+ - '3520'
133
+ 'pas': # Pascal (FPC)
134
+ submit_lang:
135
+ - '4041'
136
+ - '3019'
137
+ 'php': # PHP7
138
+ submit_lang:
139
+ - '4044'
140
+ - '3524'
141
+ 'pl': # Perl
142
+ submit_lang:
143
+ - '4042'
144
+ - '3020'
145
+ 'py': # Python3
146
+ submit_lang:
147
+ - '4006'
148
+ - '3023'
149
+ 'rb': # Ruby
150
+ submit_lang:
151
+ - '4049'
152
+ - '3024'
97
153
  test_cmd:
98
154
  default: 'ruby "{dir}/{base}.rb"'
99
- 'rs':
100
- submit_lang: '3504' # Rust
101
- 'scala':
102
- submit_lang: '3025' # Scala
103
- 'scm':
104
- submit_lang: '3026' # Scheme (Gauche)
105
- 'sed':
106
- submit_lang: '3505' # Sed (GNU sed)
107
- 'sh':
108
- submit_lang: '3001' # Bash (GNU bash)
109
- 'swift':
110
- submit_lang: '3503' # Swift
111
- 'ts':
112
- submit_lang: '3521' # TypeScript
113
- 'txt':
114
- submit_lang: '3027' # Text (cat)
115
- 'vb':
116
- submit_lang: '3028' # Visual Basic (Mono)
155
+ 'rs': # Rust
156
+ submit_lang:
157
+ - '4050'
158
+ - '3504'
159
+ 'scala': # Scala
160
+ submit_lang:
161
+ - '4051'
162
+ - '3025'
163
+ 'scm': # Scheme (Gauche)
164
+ submit_lang:
165
+ - '4053'
166
+ - '3026'
167
+ 'sed': # Sed (GNU sed)
168
+ submit_lang:
169
+ - '4066'
170
+ - '3505'
171
+ 'sh': # Bash (GNU bash)
172
+ submit_lang:
173
+ - '4007'
174
+ - '3001'
175
+ 'swift': # Swift
176
+ submit_lang:
177
+ - '4055'
178
+ - '3503'
179
+ 'ts': # TypeScript
180
+ submit_lang:
181
+ - '4057'
182
+ - '3521'
183
+ 'txt': # Text (cat)
184
+ submit_lang:
185
+ - '4056'
186
+ - '3027'
187
+ 'vb': # Visual Basic (Mono)
188
+ submit_lang:
189
+ - '4058'
190
+ - '3028'
117
191
  ```
118
192
 
119
193
  ## Configuration options
@@ -198,75 +272,85 @@ ext_settings:
198
272
  ### Settings for RubyBuiltin generator
199
273
  | Setting | Description | Default |
200
274
  |---------|-------------|---------|
201
- |default_template|Source template file path|[/templates/ruby_builtin_default.rb](/templates/ruby_builtin_default.rb)|
202
- |interactive_template|Source template file path for interactive problems|[/templates/ruby_builtin_interactive.rb](/templates/ruby_builtin_interactive.rb)|
275
+ |default_template|Source template file path|[/templates/ruby_builtin.rb.erb](/templates/ruby_builtin.rb.erb)|
203
276
 
204
277
  ### Settings for CxxBuiltin generator
205
278
  | Setting | Description | Default |
206
279
  |---------|-------------|---------|
207
- |default_template|Source template file path|[/templates/cxx_builtin_default.cxx](/templates/cxx_builtin_default.cxx)|
208
- |interactive_template|Source template file path for interactive problems|[/templates/cxx_builtin_interactive.cxx](/templates/cxx_builtin_interactive.cxx)|
280
+ |default_template|Source template file path|[/templates/cxx_builtin.cxx.erb](/templates/cxx_builtin.cxx.erb)|
209
281
 
210
- ### Language ID list (2019/09/16)
282
+ ### Language ID list (2020/06/21)
211
283
 
212
284
  | Language ID | Description |
213
285
  |-------------|-------------|
214
- |3003|C++14 (GCC 5.4.1)|
215
- |3001|Bash (GNU bash v4.3.11)|
216
- |3002|C (GCC 5.4.1)|
217
- |3004|C (Clang 3.8.0)|
218
- |3005|C++14 (Clang 3.8.0)|
219
- |3006|C# (Mono 4.6.2.0)|
220
- |3007|Clojure (1.8.0)|
221
- |3008|Common Lisp (SBCL 1.1.14)|
222
- |3009|D (DMD64 v2.070.1)|
223
- |3010|D (LDC 0.17.0)|
224
- |3011|D (GDC 4.9.4)|
225
- |3012|Fortran (gfortran v4.8.4)|
226
- |3013|Go (1.6)|
227
- |3014|Haskell (GHC 7.10.3)|
228
- |3015|Java7 (OpenJDK 1.7.0)|
229
- |3016|Java8 (OpenJDK 1.8.0)|
230
- |3017|JavaScript (node.js v5.12)|
231
- |3018|OCaml (4.02.3)|
232
- |3019|Pascal (FPC 2.6.2)|
233
- |3020|Perl (v5.18.2)|
234
- |3021|PHP (5.6.30)|
235
- |3022|Python2 (2.7.6)|
236
- |3023|Python3 (3.4.3)|
237
- |3024|Ruby (2.3.3)|
238
- |3025|Scala (2.11.7)|
239
- |3026|Scheme (Gauche 0.9.3.3)|
240
- |3027|Text (cat)|
241
- |3028|Visual Basic (Mono 4.0.1)|
242
- |3029|C++ (GCC 5.4.1)|
243
- |3030|C++ (Clang 3.8.0)|
244
- |3501|Objective-C (GCC 5.3.0)|
245
- |3502|Objective-C (Clang3.8.0)|
246
- |3503|Swift (swift-2.2-RELEASE)|
247
- |3504|Rust (1.15.1)|
248
- |3505|Sed (GNU sed 4.2.2)|
249
- |3506|Awk (mawk 1.3.3)|
250
- |3507|Brainfuck (bf 20041219)|
251
- |3508|Standard ML (MLton 20100608)|
252
- |3509|PyPy2 (5.6.0)|
253
- |3510|PyPy3 (2.4.0)|
254
- |3511|Crystal (0.20.5)|
255
- |3512|F# (Mono 4.0)|
256
- |3513|Unlambda (0.1.3)|
257
- |3514|Lua (5.3.2)|
258
- |3515|LuaJIT (2.0.4)|
259
- |3516|MoonScript (0.5.0)|
260
- |3517|Ceylon (1.2.1)|
261
- |3518|Julia (0.5.0)|
262
- |3519|Octave (4.0.2)|
263
- |3520|Nim (0.13.0)|
264
- |3521|TypeScript (2.1.6)|
265
- |3522|Perl6 (rakudo-star 2016.01)|
266
- |3523|Kotlin (1.0.0)|
267
- |3524|PHP7 (7.0.15)|
268
- |3525|COBOL - Fixed (OpenCOBOL 1.1.0)|
269
- |3526|COBOL - Free (OpenCOBOL 1.1.0)|
286
+ |4001|C (GCC 9.2.1)|
287
+ |4002|C (Clang 10.0.0)|
288
+ |4003|C++ (GCC 9.2.1)|
289
+ |4004|C++ (Clang 10.0.0)|
290
+ |4005|Java (OpenJDK 11.0.6)|
291
+ |4006|Python (3.8.2)|
292
+ |4007|Bash (5.0.11)|
293
+ |4008|bc (1.07.1)|
294
+ |4009|Awk (GNU Awk 4.1.4)|
295
+ |4010|C# (.NET Core 3.1.201)|
296
+ |4011|C# (Mono-mcs 6.8.0.105)|
297
+ |4012|C# (Mono-csc 3.5.0)|
298
+ |4013|Clojure (1.10.1.536)|
299
+ |4014|Crystal (0.33.0)|
300
+ |4015|D (DMD 2.091.0)|
301
+ |4016|D (GDC 9.2.1)|
302
+ |4017|D (LDC 1.20.1)|
303
+ |4018|Dart (2.7.2)|
304
+ |4019|dc (1.4.1)|
305
+ |4020|Erlang (22.3)|
306
+ |4021|Elixir (1.10.2)|
307
+ |4022|F# (.NET Core 3.1.201)|
308
+ |4023|F# (Mono 10.2.3)|
309
+ |4024|Forth (gforth 0.7.3)|
310
+ |4025|Fortran(GNU Fortran 9.2.1)|
311
+ |4026|Go (1.14.1)|
312
+ |4027|Haskell (GHC 8.8.3)|
313
+ |4028|Haxe (4.0.3); js|
314
+ |4029|Haxe (4.0.3); Java|
315
+ |4030|JavaScript (Node.js 12.16.1)|
316
+ |4031|Julia (1.4.0)|
317
+ |4032|Kotlin (1.3.71)|
318
+ |4033|Lua (Lua 5.3.5)|
319
+ |4034|Lua (LuaJIT 2.1.0)|
320
+ |4035|Dash (0.5.8)|
321
+ |4036|Nim (1.0.6)|
322
+ |4037|Objective-C (Clang 10.0.0)|
323
+ |4038|Common Lisp (SBCL 2.0.3)|
324
+ |4039|OCaml (4.10.0)|
325
+ |4040|Octave (5.2.0)|
326
+ |4041|Pascal (FPC 3.0.4)|
327
+ |4042|Perl (5.26.1)|
328
+ |4043|Raku (Rakudo 2020.02.1)|
329
+ |4044|PHP (7.4.4)|
330
+ |4045|Prolog (SWI-Prolog 8.0.3)|
331
+ |4046|PyPy2 (7.3.0)|
332
+ |4047|PyPy3 (7.3.0)|
333
+ |4048|Racket (7.6)|
334
+ |4049|Ruby (2.7.1)|
335
+ |4050|Rust (1.42.0)|
336
+ |4051|Scala (2.13.1)|
337
+ |4052|Java (OpenJDK 1.8.0)|
338
+ |4053|Scheme (Gauche 0.9.9)|
339
+ |4054|Standard ML (MLton 20130715)|
340
+ |4055|Swift (5.2.1)|
341
+ |4056|Text (cat 8.28)|
342
+ |4057|TypeScript (3.8)|
343
+ |4058|Visual Basic (.NET Core 3.1.101)|
344
+ |4059|Zsh (5.4.2)|
345
+ |4060|COBOL - Fixed (OpenCOBOL 1.1.0)|
346
+ |4061|COBOL - Free (OpenCOBOL 1.1.0)|
347
+ |4062|Brainfuck (bf 20041219)|
348
+ |4063|Ada2012 (GNAT 9.2.1)|
349
+ |4064|Unlambda (2.0.0)|
350
+ |4065|Cython (0.29.16)|
351
+ |4066|Sed (4.4)|
352
+ |4067|Vim (8.2.0460)|
353
+
270
354
 
271
355
  ### Variables in test_cmd string
272
356
 
@@ -320,18 +404,18 @@ test_cmd 文字列中の以下の変数には、
320
404
  test_cmd: ~
321
405
  ```
322
406
 
323
- - Add .pl6(Perl6) settings
324
- .pl6(Perl6)の設定を追加
407
+ - Add .raku(Raku) settings
408
+ .raku(Raku)の設定を追加
325
409
  ```YAML
326
410
  ext_settings:
327
- 'pl6':
328
- submit_lang: '3522' # Perl6
411
+ 'raku':
412
+ submit_lang: '4043' # Raku
329
413
  ```
330
414
 
331
- - Change submission language of .cxx to C++14(Clang)
332
- .cxxの提出言語をC++14(Clang)に変更
415
+ - Change submission language of .cxx to C++(Clang)
416
+ .cxxの提出言語をC++(Clang)に変更
333
417
  ```YAML
334
418
  ext_settings:
335
419
  'cxx':
336
- submit_lang: '3005' # C++14(Clang)
420
+ submit_lang: '4004' # C++(Clang)
337
421
  ```
@@ -4,6 +4,7 @@ require 'at_coder_friends/version'
4
4
  require 'at_coder_friends/errors'
5
5
  require 'at_coder_friends/path_util'
6
6
  require 'at_coder_friends/config_loader'
7
+ require 'at_coder_friends/path_info'
7
8
  require 'at_coder_friends/verifier'
8
9
  require 'at_coder_friends/test_runner/base'
9
10
  require 'at_coder_friends/test_runner/sample'
@@ -20,11 +21,13 @@ require 'at_coder_friends/parser/introduction_wrapper'
20
21
  require 'at_coder_friends/parser/sections'
21
22
  require 'at_coder_friends/parser/sample_data'
22
23
  require 'at_coder_friends/parser/input_format'
24
+ require 'at_coder_friends/parser/input_type'
23
25
  require 'at_coder_friends/parser/constraints'
24
26
  require 'at_coder_friends/parser/modulo'
25
27
  require 'at_coder_friends/parser/interactive'
26
28
  require 'at_coder_friends/parser/binary'
27
29
  require 'at_coder_friends/parser/main'
30
+ require 'at_coder_friends/generator/base'
28
31
  require 'at_coder_friends/generator/cxx_builtin'
29
32
  require 'at_coder_friends/generator/ruby_builtin'
30
33
  require 'at_coder_friends/generator/main'
@@ -117,6 +117,7 @@ module AtCoderFriends
117
117
 
118
118
  ctx.scraping_agent.submit
119
119
  vf.unverify
120
+ open_submission_list
120
121
  end
121
122
 
122
123
  def check_and_go
@@ -125,6 +126,7 @@ module AtCoderFriends
125
126
  # submit automatically
126
127
  ctx.scraping_agent.submit
127
128
  vf.unverify
129
+ open_submission_list
128
130
  else
129
131
  # enable manual submit
130
132
  vf.verify
@@ -142,5 +144,11 @@ module AtCoderFriends
142
144
  def open_contest
143
145
  Launchy.open(ctx.scraping_agent.contest_url)
144
146
  end
147
+
148
+ def open_submission_list
149
+ url = ctx.scraping_agent.contest_url('submissions/me')
150
+ puts "submission status : #{url}"
151
+ Launchy.open(url)
152
+ end
145
153
  end
146
154
  end