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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8025722558e20114e202913981972cc89885a7f
4
- data.tar.gz: 52975c30a2ac79ca4b459b2466de8c8b244f2296
3
+ metadata.gz: e5557a79795b5882e832192d2d244627a0ccf9a9
4
+ data.tar.gz: db912b95318108352496a14c34d76639896a49e1
5
5
  SHA512:
6
- metadata.gz: 14a7f27ec8de72d1ecafe5e27810ac781aedc23c5604e33005856398250e07617ed803dc6641ad17e45b7de8f8ae09c20fffd9997f64a34e1f4dc3f10beb63d6
7
- data.tar.gz: 0fb4f2e1afb371a7ad49ad69e9ae22fe169856a7268daf4fc78054192bba532181b82e9290d5965d5cf608ea92d85b23bb4c71f976c814adac32e704e4311eeb
6
+ metadata.gz: 8a63125e538fec1d89bafdd17abfb705962c9e9c76c53bc27962fc6b3c98a152b298c52784681cd176b568a1541e619044becc97a02da0a5ba25469d2ba7b3d3
7
+ data.tar.gz: 50b882d82d9d718616d9665cdff4c19ec6a5c47dc355dccb49f03391796481dd16425e8a70cdf2bafbae49a670df876f763d4c1a65caab2557b80120a084df42
@@ -1,11 +1,12 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
3
  AllCops:
4
+ TargetRubyVersion: 2.4
4
5
  Exclude:
5
6
  - 'templates/**/*'
6
7
  - 'spec/fixtures/**/*'
7
8
  - 'regression/**/*'
8
- TargetRubyVersion: 2.3
9
+ NewCops: enable
9
10
 
10
11
  Lint/AmbiguousBlockAssociation:
11
12
  Exclude:
@@ -26,5 +27,5 @@ Metrics/ModuleLength:
26
27
  Exclude:
27
28
  - 'spec/**/*.rb'
28
29
 
29
- Naming/UncommunicativeMethodParamName:
30
+ Naming/MethodParameterName:
30
31
  MinNameLength: 1
@@ -1,13 +1,13 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.3.8
4
+ - 2.4.10
5
5
  env:
6
6
  global:
7
7
  - CC_TEST_REPORTER_ID=cb942bcc168feb78c43c506364d5344c5ec9a46a0b68dc66acb581e77c981ff1
8
8
  - COVERAGE=true
9
9
  before_install:
10
- - gem install bundler -v '2.0.2'
10
+ - gem install bundler -v '2.1.4'
11
11
  before_script:
12
12
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
13
13
  - chmod +x ./cc-test-reporter
@@ -2,6 +2,59 @@
2
2
 
3
3
  ## master (unreleased)
4
4
 
5
+ ## 0.6.7 (2020-12-20)
6
+ ### Changed
7
+ - replace hspace with ' ' [#85](https://github.com/nejiko96/at_coder_friends/pull/85) ([suzukiapple](https://github.com/suzukiapple))
8
+ ### Deleted
9
+ - drop Ruby2.3 from target version.
10
+
11
+ ## 0.6.6 (2020-05-29)
12
+ ### Added
13
+ - open submission list after submit.
14
+ - enable -%> in ERBs.
15
+ - error handling in fetch_problem.
16
+ - remove \mathrm{...} from expressions.
17
+
18
+ ### Changed
19
+ - change task id match pattern on submission.
20
+ - treat input more than 19 digits as string.
21
+
22
+ ## 0.6.5 (2020-04-15)
23
+ ### Added
24
+ - multiple language version support.
25
+
26
+ ## 0.6.4 (2020-03-08)
27
+ ### Added
28
+ - Modulo RegExp pattern.
29
+
30
+ ### Changed
31
+ - minor changes in ERBs.
32
+ - allow underscores in problem ID.
33
+ - allow whitespaces in data file path.
34
+
35
+ ### Deleted
36
+ - remove tasks folder from installation
37
+
38
+ ## 0.6.3 (2020-01-05)
39
+ ### Added
40
+ - 'vertical array + matrix' input format support.
41
+ - 'matrix + vertical array' input format support.
42
+ - 'vertically expanded matrices' input format support.
43
+ - 'horizontally expanded matrices' input format support.
44
+ - decimal type support.
45
+ - input data with delimiter(- : /) support.
46
+ - input data of mixed type support.
47
+ - input of N-1 lines support.
48
+
49
+ ### Changed
50
+ - Change template file format to ERB.
51
+ - Template file integration
52
+
53
+ ### Deleted
54
+ - Template file for interactive problems.
55
+ - '### OUTPUT ###' embedding pattern.
56
+ - '### URL ###' embedding pattern.
57
+
5
58
  ## 0.6.2 (2019-11-18)
6
59
  ### Added
7
60
  - add ```check-and-go``` command.
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- at_coder_friends (0.6.2)
4
+ at_coder_friends (0.6.7)
5
5
  colorize (~> 0.8.1)
6
- launchy (~> 2.4.3)
6
+ launchy (>= 2.4.3)
7
7
  mechanize (~> 2.0)
8
8
 
9
9
  GEM
@@ -12,19 +12,17 @@ GEM
12
12
  addressable (2.7.0)
13
13
  public_suffix (>= 2.0.2, < 5.0)
14
14
  colorize (0.8.1)
15
- connection_pool (2.2.2)
16
- crack (0.4.3)
17
- safe_yaml (~> 1.0.0)
18
- diff-lcs (1.3)
19
- docile (1.3.2)
15
+ connection_pool (2.2.3)
16
+ crack (0.4.4)
17
+ diff-lcs (1.4.4)
18
+ docile (1.3.3)
20
19
  domain_name (0.5.20190701)
21
20
  unf (>= 0.0.5, < 1.0.0)
22
- hashdiff (1.0.0)
21
+ hashdiff (1.0.1)
23
22
  http-cookie (1.0.3)
24
23
  domain_name (~> 0.5)
25
- json (2.2.0)
26
- launchy (2.4.3)
27
- addressable (~> 2.3)
24
+ launchy (2.5.0)
25
+ addressable (~> 2.7)
28
26
  mechanize (2.7.6)
29
27
  domain_name (~> 0.5, >= 0.5.1)
30
28
  http-cookie (~> 1.0)
@@ -34,41 +32,39 @@ GEM
34
32
  nokogiri (~> 1.6)
35
33
  ntlm-http (~> 0.1, >= 0.1.1)
36
34
  webrobots (>= 0.0.9, < 0.2)
37
- mime-types (3.3)
35
+ mime-types (3.3.1)
38
36
  mime-types-data (~> 3.2015)
39
- mime-types-data (3.2019.1009)
37
+ mime-types-data (3.2020.1104)
40
38
  mini_portile2 (2.4.0)
41
39
  net-http-digest_auth (1.4.1)
42
- net-http-persistent (3.1.0)
40
+ net-http-persistent (4.0.0)
43
41
  connection_pool (~> 2.2)
44
- nokogiri (1.10.4)
42
+ nokogiri (1.10.10)
45
43
  mini_portile2 (~> 2.4.0)
46
44
  ntlm-http (0.1.1)
47
- public_suffix (4.0.1)
48
- rake (13.0.1)
49
- rspec (3.9.0)
50
- rspec-core (~> 3.9.0)
51
- rspec-expectations (~> 3.9.0)
52
- rspec-mocks (~> 3.9.0)
53
- rspec-core (3.9.0)
54
- rspec-support (~> 3.9.0)
55
- rspec-expectations (3.9.0)
45
+ public_suffix (4.0.6)
46
+ rake (13.0.2)
47
+ rspec (3.10.0)
48
+ rspec-core (~> 3.10.0)
49
+ rspec-expectations (~> 3.10.0)
50
+ rspec-mocks (~> 3.10.0)
51
+ rspec-core (3.10.0)
52
+ rspec-support (~> 3.10.0)
53
+ rspec-expectations (3.10.0)
56
54
  diff-lcs (>= 1.2.0, < 2.0)
57
- rspec-support (~> 3.9.0)
58
- rspec-mocks (3.9.0)
55
+ rspec-support (~> 3.10.0)
56
+ rspec-mocks (3.10.0)
59
57
  diff-lcs (>= 1.2.0, < 2.0)
60
- rspec-support (~> 3.9.0)
61
- rspec-support (3.9.0)
62
- safe_yaml (1.0.5)
63
- simplecov (0.17.1)
58
+ rspec-support (~> 3.10.0)
59
+ rspec-support (3.10.0)
60
+ simplecov (0.18.5)
64
61
  docile (~> 1.1)
65
- json (>= 1.8, < 3)
66
- simplecov-html (~> 0.10.0)
67
- simplecov-html (0.10.2)
62
+ simplecov-html (~> 0.11)
63
+ simplecov-html (0.12.3)
68
64
  unf (0.1.4)
69
65
  unf_ext
70
- unf_ext (0.0.7.6)
71
- webmock (3.7.6)
66
+ unf_ext (0.0.7.7)
67
+ webmock (3.11.0)
72
68
  addressable (>= 2.3.6)
73
69
  crack (>= 0.3.2)
74
70
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -87,4 +83,4 @@ DEPENDENCIES
87
83
  webmock (~> 3.0)
88
84
 
89
85
  BUNDLED WITH
90
- 2.0.2
86
+ 2.1.4
data/README.md CHANGED
@@ -16,7 +16,7 @@ AtCoderFriends automates tasks about [AtCoder](https://atcoder.jp/) programming
16
16
 
17
17
  ## Dependencies
18
18
 
19
- - Ruby 2.3 or newer
19
+ - Ruby 2.4 or newer
20
20
  - [Mechanize](https://github.com/sparklemotion/mechanize)
21
21
 
22
22
  ## Installation
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('lib', __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'at_coder_friends/version'
3
+ require_relative 'lib/at_coder_friends/version'
6
4
 
7
5
  Gem::Specification.new do |spec|
8
6
  spec.name = 'at_coder_friends'
@@ -23,23 +21,23 @@ Gem::Specification.new do |spec|
23
21
 
24
22
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
25
23
  `git ls-files -z`.split("\x0").reject do |f|
26
- f.match(%r{^(test|spec|features)/})
24
+ f.match(%r{^(test|spec|features|tasks)/})
27
25
  end
28
26
  end
29
27
  spec.bindir = 'exe'
30
28
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
29
  spec.require_paths = ['lib']
32
30
 
33
- spec.required_ruby_version = '>= 2.3.0'
31
+ spec.required_ruby_version = '>= 2.4.0'
34
32
 
35
33
  spec.metadata = {
36
34
  'homepage_uri' => spec.homepage,
37
35
  'source_code_uri' => spec.homepage,
38
- 'changelog_uri' => 'https://github.com/nejiko96/at_coder_friends/blob/master/CHANGELOG.md'
36
+ 'changelog_uri' => spec.homepage + '/blob/master/CHANGELOG.md'
39
37
  }
40
38
 
41
39
  spec.add_dependency 'colorize', '~> 0.8.1'
42
- spec.add_dependency 'launchy', '~> 2.4.3'
40
+ spec.add_dependency 'launchy', '>= 2.4.3'
43
41
  spec.add_dependency 'mechanize', '~> 2.0'
44
42
 
45
43
  spec.add_development_dependency 'bundler', '~> 2.0'
@@ -4,88 +4,162 @@ generators:
4
4
  - RubyBuiltin
5
5
  - CxxBuiltin
6
6
  ext_settings:
7
- 'awk':
8
- submit_lang: '3506' # Awk (mawk)
9
- 'bf':
10
- submit_lang: '3507' # Brainfuck
11
- 'c':
12
- submit_lang: '3002' # C (GCC)
7
+ 'awk': # Awk (mawk)
8
+ submit_lang:
9
+ - '4009'
10
+ - '3506'
11
+ 'bf': # Brainfuck
12
+ submit_lang:
13
+ - '4062'
14
+ - '3507'
15
+ 'c': # C (GCC)
16
+ submit_lang:
17
+ - '4001'
18
+ - '3002'
13
19
  test_cmd:
14
20
  default: '"{dir}/{base}"'
15
21
  windows: '"{dir}/{base}.exe"'
16
- 'cbl':
17
- submit_lang: '3526' # COBOL - Free
18
- 'clj':
19
- submit_lang: '3007' # Clojure
20
- 'cr':
21
- submit_lang: '3511' # Crystal
22
- 'cs':
23
- submit_lang: '3006' # C# (Mono)
22
+ 'cbl': # COBOL - Free
23
+ submit_lang:
24
+ - '4061'
25
+ - '3526'
26
+ 'clj': # Clojure
27
+ submit_lang:
28
+ - '4013'
29
+ - '3007'
30
+ 'cr': # Crystal
31
+ submit_lang:
32
+ - '4014'
33
+ - '3511'
34
+ 'cs': # C# (Mono-mcs)
35
+ submit_lang:
36
+ - '4011'
37
+ - '3006'
24
38
  test_cmd:
25
39
  default: 'mono "{dir}/{base}.exe"'
26
40
  windows: '"{dir}/{base}.exe"'
27
- 'cxx':
28
- submit_lang: '3003' # C++14 (GCC)
41
+ 'cxx': # C++ (GCC)
42
+ submit_lang:
43
+ - '4003'
44
+ - '3003'
29
45
  test_cmd:
30
46
  default: '"{dir}/{base}"'
31
47
  windows: '"{dir}/{base}.exe"'
32
- 'd':
33
- submit_lang: '3009' # D (DMD64)
34
- 'f90':
35
- submit_lang: '3012' # Fortran (gfortran)
36
- 'fs':
37
- submit_lang: '3512' # F# (Mono)
38
- 'go':
39
- submit_lang: '3013' # Go
40
- 'hs':
41
- submit_lang: '3014' # Haskell (GHC)
42
- 'java':
43
- submit_lang: '3016' # Java8 (OpenJDK)
48
+ 'd': # D (DMD64)
49
+ submit_lang:
50
+ - '4015'
51
+ - '3009'
52
+ 'dart': # Dart
53
+ submit_lang: '4018'
54
+ 'f90': # Fortran (gfortran)
55
+ submit_lang:
56
+ - '4025'
57
+ - '3012'
58
+ 'fs': # F# (Mono)
59
+ submit_lang:
60
+ - '4023'
61
+ - '3512'
62
+ 'go': # Go
63
+ submit_lang:
64
+ - '4026'
65
+ - '3013'
66
+ 'hs': # Haskell (GHC)
67
+ submit_lang:
68
+ - '4027'
69
+ - '3014'
70
+ 'java': # Java (OpenJDK)
71
+ submit_lang:
72
+ - '4005'
73
+ - '3016'
44
74
  test_cmd:
45
75
  default: 'java -cp "{dir}" Main'
46
- 'jl':
47
- submit_lang: '3518' # Julia
48
- 'js':
49
- submit_lang: '3017' # JavaScript (node.js)
50
- 'kt':
51
- submit_lang: '3523' # Kotlin
52
- 'lisp':
53
- submit_lang: '3008' # Common Lisp
54
- 'lua':
55
- submit_lang: '3515' # LuaJIT
56
- 'm':
57
- submit_lang: '3519' # Octave
58
- 'ml':
59
- submit_lang: '3018' # OCaml
60
- 'nim':
61
- submit_lang: '3520' # Nim
62
- 'pas':
63
- submit_lang: '3019' # Pascal (FPC)
64
- 'php':
65
- submit_lang: '3524' # PHP7
66
- 'pl':
67
- submit_lang: '3020' # Perl
68
- 'py':
69
- submit_lang: '3023' # Python3
70
- 'rb':
71
- submit_lang: '3024' # Ruby
76
+ 'jl': # Julia
77
+ submit_lang:
78
+ - '4031'
79
+ - '3518'
80
+ 'js': # JavaScript (node.js)
81
+ submit_lang:
82
+ - '4030'
83
+ - '3017'
84
+ 'kt': # Kotlin
85
+ submit_lang:
86
+ - '4032'
87
+ - '3523'
88
+ 'lisp': # Common Lisp
89
+ submit_lang:
90
+ - '4038'
91
+ - '3008'
92
+ 'lua': # LuaJIT
93
+ submit_lang:
94
+ - '4034'
95
+ - '3515'
96
+ 'm': # Octave
97
+ submit_lang:
98
+ - '4040'
99
+ - '3519'
100
+ 'ml': # OCaml
101
+ submit_lang:
102
+ - '4039'
103
+ - '3018'
104
+ 'nim': # Nim
105
+ submit_lang:
106
+ - '4036'
107
+ - '3520'
108
+ 'pas': # Pascal (FPC)
109
+ submit_lang:
110
+ - '4041'
111
+ - '3019'
112
+ 'php': # PHP7
113
+ submit_lang:
114
+ - '4044'
115
+ - '3524'
116
+ 'pl': # Perl
117
+ submit_lang:
118
+ - '4042'
119
+ - '3020'
120
+ 'py': # Python3
121
+ submit_lang:
122
+ - '4006'
123
+ - '3023'
124
+ 'rb': # Ruby
125
+ submit_lang:
126
+ - '4049'
127
+ - '3024'
72
128
  test_cmd:
73
129
  default: 'ruby "{dir}/{base}.rb"'
74
- 'rs':
75
- submit_lang: '3504' # Rust
76
- 'scala':
77
- submit_lang: '3025' # Scala
78
- 'scm':
79
- submit_lang: '3026' # Scheme (Gauche)
80
- 'sed':
81
- submit_lang: '3505' # Sed (GNU sed)
82
- 'sh':
83
- submit_lang: '3001' # Bash (GNU bash)
84
- 'swift':
85
- submit_lang: '3503' # Swift
86
- 'ts':
87
- submit_lang: '3521' # TypeScript
88
- 'txt':
89
- submit_lang: '3027' # Text (cat)
90
- 'vb':
91
- submit_lang: '3028' # Visual Basic (Mono)
130
+ 'rs': # Rust
131
+ submit_lang:
132
+ - '4050'
133
+ - '3504'
134
+ 'scala': # Scala
135
+ submit_lang:
136
+ - '4051'
137
+ - '3025'
138
+ 'scm': # Scheme (Gauche)
139
+ submit_lang:
140
+ - '4053'
141
+ - '3026'
142
+ 'sed': # Sed (GNU sed)
143
+ submit_lang:
144
+ - '4066'
145
+ - '3505'
146
+ 'sh': # Bash (GNU bash)
147
+ submit_lang:
148
+ - '4007'
149
+ - '3001'
150
+ 'swift': # Swift
151
+ submit_lang:
152
+ - '4055'
153
+ - '3503'
154
+ 'ts': # TypeScript
155
+ submit_lang:
156
+ - '4057'
157
+ - '3521'
158
+ 'txt': # Text (cat)
159
+ submit_lang:
160
+ - '4056'
161
+ - '3027'
162
+ 'vb': # Visual Basic (Mono)
163
+ submit_lang:
164
+ - '4058'
165
+ - '3028'