at_coder_friends 0.6.8 → 0.7.0
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.
- checksums.yaml +4 -4
- data/.gitattributes +1 -0
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.github/workflows/ruby.yml +38 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +8 -1
- data/CHANGELOG.md +23 -4
- data/Gemfile.lock +43 -43
- data/README.md +15 -92
- data/at_coder_friends.gemspec +4 -3
- data/lib/at_coder_friends/cli.rb +13 -28
- data/lib/at_coder_friends/config_loader.rb +2 -4
- data/lib/at_coder_friends/generator/any_builtin.rb +22 -0
- data/lib/at_coder_friends/generator/base.rb +55 -6
- data/lib/at_coder_friends/generator/c_builtin.rb +22 -0
- data/lib/at_coder_friends/generator/cxx_builtin.rb +9 -241
- data/lib/at_coder_friends/generator/fragment.rb +106 -0
- data/lib/at_coder_friends/generator/main.rb +20 -14
- data/lib/at_coder_friends/generator/ruby_builtin.rb +13 -166
- data/lib/at_coder_friends/parser/binary.rb +12 -5
- data/lib/at_coder_friends/parser/constraints.rb +8 -8
- data/lib/at_coder_friends/parser/input_format.rb +19 -15
- data/lib/at_coder_friends/parser/modulo.rb +5 -7
- data/lib/at_coder_friends/parser/section_wrapper.rb +3 -5
- data/lib/at_coder_friends/parser/sections.rb +2 -2
- data/lib/at_coder_friends/path_util.rb +1 -1
- data/lib/at_coder_friends/problem.rb +5 -5
- data/lib/at_coder_friends/scraping/agent.rb +1 -1
- data/lib/at_coder_friends/scraping/authentication.rb +3 -3
- data/lib/at_coder_friends/scraping/session.rb +1 -1
- data/lib/at_coder_friends/scraping/tasks.rb +6 -8
- data/lib/at_coder_friends/test_runner/base.rb +1 -2
- data/lib/at_coder_friends/test_runner/judge.rb +3 -3
- data/lib/at_coder_friends/version.rb +1 -1
- data/lib/at_coder_friends.rb +3 -0
- data/templates/any_builtin.md.erb +30 -0
- data/templates/any_builtin_fragments.yml +5 -0
- data/templates/c_builtin.c.erb +36 -0
- data/templates/c_builtin_fragments.yml +127 -0
- data/templates/csharp_sample.cs.erb +29 -0
- data/templates/csharp_sample_fragments.yml +159 -0
- data/templates/java_sample.java.erb +25 -0
- data/templates/java_sample_fragments.yml +98 -0
- data/templates/ruby_builtin_fragments.yml +93 -0
- metadata +26 -6
- data/.travis.yml +0 -16
- data/docs/CONFIGURATION.md +0 -421
data/.travis.yml
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
sudo: false
|
2
|
-
language: ruby
|
3
|
-
rvm:
|
4
|
-
- 2.5.8
|
5
|
-
env:
|
6
|
-
global:
|
7
|
-
- CC_TEST_REPORTER_ID=cb942bcc168feb78c43c506364d5344c5ec9a46a0b68dc66acb581e77c981ff1
|
8
|
-
- COVERAGE=true
|
9
|
-
before_script:
|
10
|
-
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
11
|
-
- chmod +x ./cc-test-reporter
|
12
|
-
- ./cc-test-reporter before-build
|
13
|
-
script:
|
14
|
-
- bundle exec rake spec
|
15
|
-
after_script:
|
16
|
-
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
data/docs/CONFIGURATION.md
DELETED
@@ -1,421 +0,0 @@
|
|
1
|
-
# Configuration details
|
2
|
-
|
3
|
-
## Configuration file
|
4
|
-
|
5
|
-
You can specify AtCoderFriends settings
|
6
|
-
in the configuration file ```.at_coder_friends.yml```.
|
7
|
-
Place it in your working directory (or higher).
|
8
|
-
|
9
|
-
AtCoderFriends の動作に関する設定は
|
10
|
-
設定ファイル ```.at_coder_friends.yml``` に記述します。
|
11
|
-
このファイルは作業ディレクトリ(またはその上位ディレクトリ)に配置します。
|
12
|
-
|
13
|
-
## Default settings
|
14
|
-
|
15
|
-
The default settings are as follows.
|
16
|
-
If you add new settings or change existing settings in ```.at_coder_friends.yml```,
|
17
|
-
Its contents are merged with the default settings.
|
18
|
-
|
19
|
-
デフォルトの設定は以下のようになっています。
|
20
|
-
```.at_coder_friends.yml```で新しい設定項目の追加や、既存の設定項目の変更をすると、
|
21
|
-
その内容がデフォルト設定にマージされます。
|
22
|
-
|
23
|
-
[/config/default.yml](/config/default.yml)
|
24
|
-
|
25
|
-
```YAML
|
26
|
-
user: ~
|
27
|
-
password: ~
|
28
|
-
generators:
|
29
|
-
- RubyBuiltin
|
30
|
-
- CxxBuiltin
|
31
|
-
ext_settings:
|
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'
|
44
|
-
test_cmd:
|
45
|
-
default: '"{dir}/{base}"'
|
46
|
-
windows: '"{dir}/{base}.exe"'
|
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'
|
63
|
-
test_cmd:
|
64
|
-
default: 'mono "{dir}/{base}.exe"'
|
65
|
-
windows: '"{dir}/{base}.exe"'
|
66
|
-
'cxx': # C++ (GCC)
|
67
|
-
submit_lang:
|
68
|
-
- '4003'
|
69
|
-
- '3003'
|
70
|
-
test_cmd:
|
71
|
-
default: '"{dir}/{base}"'
|
72
|
-
windows: '"{dir}/{base}.exe"'
|
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'
|
99
|
-
test_cmd:
|
100
|
-
default: 'java -cp "{dir}" Main'
|
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'
|
153
|
-
test_cmd:
|
154
|
-
default: 'ruby "{dir}/{base}.rb"'
|
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'
|
191
|
-
```
|
192
|
-
|
193
|
-
## Configuration options
|
194
|
-
|
195
|
-
- user
|
196
|
-
AtCoder username
|
197
|
-
If omitted, you are prompted to enter it on the first login.
|
198
|
-
AtCoderのユーザ名
|
199
|
-
省略した場合、初回のログイン時に入力を求められます
|
200
|
-
|
201
|
-
- password
|
202
|
-
AtCoder password
|
203
|
-
If omitted, you are prompted to enter it on the first login.
|
204
|
-
AtCoderのパスワード
|
205
|
-
省略した場合、初回のログイン時に入力を求められます
|
206
|
-
|
207
|
-
- generators
|
208
|
-
List of source generator class names
|
209
|
-
In default, ```RubyBuiltin``` and ```CxxBuiltin``` are available.
|
210
|
-
For other generators, corresponding plugin will be used
|
211
|
-
if it has been installed.
|
212
|
-
ソースジェネレータのクラス名(リスト形式)
|
213
|
-
既定の状態では「RubyBuiltin」と「CxxBuiltin」が利用でき、
|
214
|
-
その他のジェネレータは、対応するプラグインがインストールされていれば
|
215
|
-
利用できます
|
216
|
-
|
217
|
-
For example, if ```RubyAlt``` is specified as generator name,
|
218
|
-
following plugin will be used:
|
219
|
-
|
220
|
-
| | |
|
221
|
-
|-----------------|---------------------------------------------------|
|
222
|
-
|Gem Name |```at_coder_friends-generator-ruby_alt``` |
|
223
|
-
|Require Statement|```require 'at_coder_friends/generator/ruby_alt'```|
|
224
|
-
|Main Class Name |```AtCoderFriends::Generator::RubyAlt``` |
|
225
|
-
|
226
|
-
[search generator in GitHub](https://github.com/search?q=at_coder_friends-generator)
|
227
|
-
|
228
|
-
- generator_settings
|
229
|
-
- _(generator name)_
|
230
|
-
Settings for each generator
|
231
|
-
For details, see the manual of each generator.
|
232
|
-
[Settings for built-in generators](#builtin-generator-settings)
|
233
|
-
ジェネレータ毎の設定
|
234
|
-
詳細は各ジェネレータのマニュアルを参照してください
|
235
|
-
[組込ジェネレータの設定](#builtin-generator-settings)
|
236
|
-
|
237
|
-
- ext_settings
|
238
|
-
Extension specific settings
|
239
|
-
拡張子ごとの設定
|
240
|
-
|
241
|
-
- _'ext'_
|
242
|
-
Target extension name
|
243
|
-
対象となる拡張子
|
244
|
-
|
245
|
-
- submit_lang
|
246
|
-
Language ID of submission language
|
247
|
-
提出言語の言語ID
|
248
|
-
|
249
|
-
- test_cmd
|
250
|
-
Execution command for test
|
251
|
-
If not set, the test will run using AtCoder "Custom Test" page.
|
252
|
-
テストで使用する実行コマンドの設定
|
253
|
-
未設定の場合、テストはAtCoderの「コードテスト」ページを使用して行われます
|
254
|
-
|
255
|
-
- default
|
256
|
-
Default execution command
|
257
|
-
デフォルトの実行コマンド
|
258
|
-
|
259
|
-
- wndows
|
260
|
-
Execution command for Windows(optional)
|
261
|
-
Windows専用実行コマンド(あれば設定)
|
262
|
-
|
263
|
-
- macosx
|
264
|
-
Execution command for MacOS(optional)
|
265
|
-
MacOS専用実行コマンド(あれば設定)
|
266
|
-
|
267
|
-
- linux
|
268
|
-
Execution command for Linux(optional)
|
269
|
-
Linux専用実行コマンド(あれば設定)
|
270
|
-
|
271
|
-
<a id="builtin-generator-settings"></a>
|
272
|
-
### Settings for RubyBuiltin generator
|
273
|
-
| Setting | Description | Default |
|
274
|
-
|---------|-------------|---------|
|
275
|
-
|default_template|Source template file path|[/templates/ruby_builtin.rb.erb](/templates/ruby_builtin.rb.erb)|
|
276
|
-
|
277
|
-
### Settings for CxxBuiltin generator
|
278
|
-
| Setting | Description | Default |
|
279
|
-
|---------|-------------|---------|
|
280
|
-
|default_template|Source template file path|[/templates/cxx_builtin.cxx.erb](/templates/cxx_builtin.cxx.erb)|
|
281
|
-
|
282
|
-
### Language ID list (2020/06/21)
|
283
|
-
|
284
|
-
| Language ID | Description |
|
285
|
-
|-------------|-------------|
|
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
|
-
|
354
|
-
|
355
|
-
### Variables in test_cmd string
|
356
|
-
|
357
|
-
The following variables in test_cmd string
|
358
|
-
is substituted with the path information of the target file
|
359
|
-
during execution.
|
360
|
-
|
361
|
-
test_cmd 文字列中の以下の変数には、
|
362
|
-
実行時に対象ファイルのパス情報が展開されます。
|
363
|
-
|
364
|
-
| Variable | Descripton |
|
365
|
-
|----------|----------------------------------------------------------------|
|
366
|
-
|{dir} |the directory name of the file<br>ファイルの置かれているディレクトリ名|
|
367
|
-
|{base} |the file name excluding the extension<br>拡張子を除いたファイル名 |
|
368
|
-
|
369
|
-
## Examples of overwriting settings
|
370
|
-
|
371
|
-
- Use only Ruby source generator
|
372
|
-
Rubyのソースジェネレータのみ使用
|
373
|
-
```YAML
|
374
|
-
generators:
|
375
|
-
- RubyBuiltin
|
376
|
-
```
|
377
|
-
- Do not use source generator
|
378
|
-
ソースジェネレータを使用しない
|
379
|
-
```YAML
|
380
|
-
generators: ~
|
381
|
-
```
|
382
|
-
- change C++ source template
|
383
|
-
C++のソース雛型を変更
|
384
|
-
```YAML
|
385
|
-
generator_settings:
|
386
|
-
CxxBuiltin:
|
387
|
-
default_template: /path/to/template
|
388
|
-
```
|
389
|
-
|
390
|
-
- Test .py with local Python
|
391
|
-
.pyをローカル環境のPythonでテスト
|
392
|
-
```YAML
|
393
|
-
ext_settings:
|
394
|
-
'py':
|
395
|
-
test_cmd:
|
396
|
-
default: 'python "{dir}/{base}.py"'
|
397
|
-
```
|
398
|
-
|
399
|
-
- Test .rb with "Custom Test" page
|
400
|
-
.rb を「コードテスト」ページでテスト
|
401
|
-
```YAML
|
402
|
-
ext_settings:
|
403
|
-
'rb':
|
404
|
-
test_cmd: ~
|
405
|
-
```
|
406
|
-
|
407
|
-
- Add .raku(Raku) settings
|
408
|
-
.raku(Raku)の設定を追加
|
409
|
-
```YAML
|
410
|
-
ext_settings:
|
411
|
-
'raku':
|
412
|
-
submit_lang: '4043' # Raku
|
413
|
-
```
|
414
|
-
|
415
|
-
- Change submission language of .cxx to C++(Clang)
|
416
|
-
.cxxの提出言語をC++(Clang)に変更
|
417
|
-
```YAML
|
418
|
-
ext_settings:
|
419
|
-
'cxx':
|
420
|
-
submit_lang: '4004' # C++(Clang)
|
421
|
-
```
|