green_day 0.1.7 → 0.3.1
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/.github/workflows/ruby.yml +21 -47
- data/.rubocop.yml +13 -2
- data/README.md +3 -3
- data/green_day.gemspec +8 -1
- data/lib/green_day/atcoder_client.rb +9 -3
- data/lib/green_day/cli.rb +26 -26
- data/lib/green_day/contest.rb +3 -4
- data/lib/green_day/task.rb +6 -12
- data/lib/green_day/test_builder.rb +2 -2
- data/lib/green_day/version.rb +1 -1
- metadata +93 -10
- data/lib/green_day/snippet_builder.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36a5e97dca37d3a8c3763cc0ac411b143c70a9bb9371b415a0e64828141613fb
|
4
|
+
data.tar.gz: 4c3101ee0d718b79907850334211d6f92671c2817322eb22862c74077eaa8a40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea1311da8032a5403d8fccb3e53acb74e5bd36b443d9e985b3d79a8a8dab47151151a5413b645c4ff8f98290011a970daece21f2329727b6f6511878ce75740b
|
7
|
+
data.tar.gz: 65683e77ffb9e1beb340a2131ab0bd60b92e35276cafd4740f6ce1df5ca165c77b4d1ab72dbaccaba9067ef17824d2fea47ef61b500d8ec2cd75a233252aea98
|
data/.github/workflows/ruby.yml
CHANGED
@@ -1,60 +1,34 @@
|
|
1
1
|
name: Ruby
|
2
2
|
|
3
|
-
on:
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
push:
|
6
|
+
branches: [ master ]
|
4
7
|
|
5
8
|
jobs:
|
6
|
-
|
7
|
-
|
8
|
-
runs-on: ${{ matrix.runner }}
|
9
|
-
|
9
|
+
rspec:
|
10
|
+
runs-on: ubuntu-latest
|
10
11
|
strategy:
|
11
|
-
fail-fast: false
|
12
|
-
|
13
12
|
matrix:
|
14
13
|
ruby:
|
15
|
-
- 2.
|
16
|
-
-
|
17
|
-
include:
|
18
|
-
- ruby: 2.3.3
|
19
|
-
runner: ubuntu-16.04
|
20
|
-
- ruby: 2.7.0
|
21
|
-
runner: ubuntu-latest
|
22
|
-
|
14
|
+
- 2.7.1
|
15
|
+
- 3.0.0
|
23
16
|
steps:
|
24
17
|
- uses: actions/checkout@v2
|
25
|
-
|
26
|
-
|
27
|
-
uses: masa-iwasaki/setup-rbenv@1.1.0
|
28
|
-
|
29
|
-
- name: Cache RBENV_ROOT
|
30
|
-
uses: actions/cache@v1
|
31
|
-
id: cache_rbenv
|
18
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
19
|
+
uses: ruby/setup-ruby@v1
|
32
20
|
with:
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
- name:
|
37
|
-
run:
|
38
|
-
|
39
|
-
sudo apt-get remove -y libssl-dev
|
40
|
-
sudo apt-get install -y libssl-dev=1.0.2g-1ubuntu4.15
|
41
|
-
if: matrix.runner == 'ubuntu-16.04'
|
42
|
-
|
43
|
-
- name: Install Ruby
|
44
|
-
env:
|
45
|
-
RBENV_VERSION: ${{ matrix.ruby }}
|
46
|
-
run: |
|
47
|
-
set -xe
|
48
|
-
eval "$(rbenv init -)"
|
49
|
-
rbenv install -s $RBENV_VERSION
|
50
|
-
gem install bundler || true
|
51
|
-
|
52
|
-
- name: test with Rake
|
21
|
+
ruby-version: ${{ matrix.ruby }}
|
22
|
+
- name: bundle install
|
23
|
+
run: bundle install
|
24
|
+
- name: Rubocop
|
25
|
+
run: bundle exec rubocop
|
26
|
+
- name: Rspec
|
53
27
|
env:
|
54
28
|
USER_NAME: ${{ secrets.USER_NAME }}
|
55
29
|
PASSWORD: ${{ secrets.PASSWORD }}
|
56
|
-
|
57
|
-
run:
|
58
|
-
|
59
|
-
|
60
|
-
|
30
|
+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
31
|
+
run: script -e -c "rake spec"
|
32
|
+
|
33
|
+
|
34
|
+
|
data/.rubocop.yml
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop-rake
|
3
|
+
- rubocop-rspec
|
4
|
+
|
1
5
|
AllCops:
|
6
|
+
NewCops: enable
|
2
7
|
Exclude:
|
3
8
|
- 'spec/spec_helper.rb'
|
4
9
|
Style/Documentation:
|
@@ -9,5 +14,11 @@ Layout/LineLength:
|
|
9
14
|
Max: 90
|
10
15
|
Metrics/BlockLength:
|
11
16
|
Exclude:
|
12
|
-
- 'spec
|
13
|
-
|
17
|
+
- 'spec/*/**'
|
18
|
+
- 'green_day.gemspec'
|
19
|
+
RSpec/NamedSubject:
|
20
|
+
Enabled: false
|
21
|
+
RSpec/NestedGroups:
|
22
|
+
Max: 4
|
23
|
+
RSpec/ExampleLength:
|
24
|
+
Enabled: false
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# GreenDay
|
2
|
-
Automatically create workspace and tests for Atcoder
|
2
|
+
Automatically create workspace and tests for Atcoder contest
|
3
3
|
(日本語で解説した記事は[こちら](https://qiita.com/QWYNG/items/0e2e6b72bd1969d0d751))
|
4
4
|
## Installation
|
5
5
|
|
@@ -18,11 +18,11 @@ Or install it yourself as:
|
|
18
18
|
$ gem install green_day
|
19
19
|
|
20
20
|
## Usage
|
21
|
-
login(this command stores your cookie as
|
21
|
+
login(this command stores your cookie as `.cookie-store` in current directory)
|
22
22
|
|
23
23
|
$ bundle exec green_day login
|
24
24
|
|
25
|
-
If you want to delete session, remove
|
25
|
+
If you want to delete session, remove `.cookie-store`
|
26
26
|
|
27
27
|
This command creates directory and spec.
|
28
28
|
|
data/green_day.gemspec
CHANGED
@@ -5,6 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
require 'green_day/version'
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
+
spec.required_ruby_version = '>= 2.7.1'
|
8
9
|
spec.name = 'green_day'
|
9
10
|
spec.executables = ['green_day']
|
10
11
|
spec.version = GreenDay::VERSION
|
@@ -25,13 +26,19 @@ Gem::Specification.new do |spec|
|
|
25
26
|
spec.bindir = 'exe'
|
26
27
|
spec.require_paths = ['lib']
|
27
28
|
|
29
|
+
spec.add_dependency 'colorize'
|
28
30
|
spec.add_dependency 'faraday', '< 1.0'
|
29
31
|
spec.add_dependency 'faraday-cookie_jar'
|
30
32
|
spec.add_dependency 'nokogiri'
|
31
|
-
spec.add_dependency '
|
33
|
+
spec.add_dependency 'parallel'
|
32
34
|
spec.add_dependency 'thor'
|
35
|
+
spec.add_dependency 'webrick'
|
33
36
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
37
|
+
spec.add_development_dependency 'codecov'
|
34
38
|
spec.add_development_dependency 'dotenv'
|
35
39
|
spec.add_development_dependency 'rake', '>= 12.3.3'
|
40
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
36
41
|
spec.add_development_dependency 'rubocop'
|
42
|
+
spec.add_development_dependency 'rubocop-rake'
|
43
|
+
spec.add_development_dependency 'rubocop-rspec'
|
37
44
|
end
|
@@ -8,7 +8,7 @@ require 'nokogiri'
|
|
8
8
|
module GreenDay
|
9
9
|
class AtcoderClient
|
10
10
|
ATCODER_ENDPOINT = 'https://atcoder.jp'
|
11
|
-
|
11
|
+
COOKIE_FILE_NAME = '.cookie-store'
|
12
12
|
attr_reader :client, :cookie_jar
|
13
13
|
|
14
14
|
def initialize
|
@@ -57,14 +57,20 @@ module GreenDay
|
|
57
57
|
raise Error, CGI.unescape(select_flash_cookie.value).split('.').shift
|
58
58
|
end
|
59
59
|
|
60
|
-
cookie_jar.save(
|
60
|
+
cookie_jar.save(COOKIE_FILE_NAME)
|
61
61
|
end
|
62
62
|
|
63
63
|
private
|
64
64
|
|
65
65
|
def create_or_load_cookie_jar
|
66
66
|
jar = HTTP::CookieJar.new
|
67
|
-
|
67
|
+
if File.exist?(COOKIE_FILE_NAME)
|
68
|
+
jar.load(COOKIE_FILE_NAME)
|
69
|
+
elsif File.exist?('cookie-store')
|
70
|
+
warn 'cookie-store needs rename .cookie-store'
|
71
|
+
jar.load('cookie-store')
|
72
|
+
end
|
73
|
+
|
68
74
|
jar
|
69
75
|
end
|
70
76
|
|
data/lib/green_day/cli.rb
CHANGED
@@ -1,65 +1,65 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'thor'
|
4
|
+
require 'parallel'
|
5
|
+
require 'colorize'
|
6
|
+
require 'io/console'
|
4
7
|
require_relative 'atcoder_client'
|
5
8
|
require_relative 'contest'
|
6
9
|
require_relative 'test_builder'
|
7
|
-
require_relative 'snippet_builder'
|
8
10
|
|
9
11
|
module GreenDay
|
10
12
|
class Cli < Thor
|
11
13
|
desc 'login Atcoder', 'login Atcoder and save session'
|
12
14
|
def login
|
13
15
|
print 'username:'
|
14
|
-
username =
|
16
|
+
username = $stdin.gets(chomp: true)
|
15
17
|
print 'password:'
|
16
|
-
password =
|
18
|
+
password = $stdin.noecho { |stdin| stdin.gets(chomp: true) }.tap { puts }
|
17
19
|
|
18
20
|
AtcoderClient.new.login(username, password)
|
21
|
+
puts(
|
22
|
+
"Successfully created #{AtcoderClient::COOKIE_FILE_NAME}"
|
23
|
+
.colorize(:green)
|
24
|
+
)
|
19
25
|
end
|
20
26
|
|
21
27
|
desc 'new [contest name]', 'create contest workspace and spec'
|
22
28
|
def new(contest_name)
|
23
|
-
contest = Contest.new(contest_name)
|
24
|
-
FileUtils.makedirs("#{
|
29
|
+
contest = Contest.new(contest_name, AtcoderClient.new)
|
30
|
+
FileUtils.makedirs("#{contest.name}/spec")
|
25
31
|
|
26
|
-
contest.tasks
|
27
|
-
|
28
|
-
|
29
|
-
create_submit_file!(contest_name, task_code)
|
30
|
-
create_spec_file!(contest_name, task_code, task.input_output_hash)
|
32
|
+
Parallel.each(contest.tasks) do |task|
|
33
|
+
create_submit_file(task)
|
34
|
+
create_spec_file(task)
|
31
35
|
end
|
36
|
+
|
37
|
+
puts "Successfully created #{contest.name} directory".colorize(:green)
|
32
38
|
end
|
33
39
|
|
34
40
|
private
|
35
41
|
|
36
|
-
def create_submit_file
|
37
|
-
File.open(submit_file_path(
|
38
|
-
f.write(SnippetBuilder.build)
|
39
|
-
end
|
40
|
-
|
41
|
-
true
|
42
|
+
def create_submit_file(task)
|
43
|
+
File.open(submit_file_path(task), 'w')
|
42
44
|
end
|
43
45
|
|
44
|
-
def create_spec_file
|
46
|
+
def create_spec_file(task)
|
45
47
|
test =
|
46
48
|
TestBuilder.build_test(
|
47
|
-
submit_file_path(
|
48
|
-
|
49
|
+
submit_file_path(task),
|
50
|
+
task.sample_answers
|
49
51
|
)
|
50
|
-
File.open(spec_file_path(
|
52
|
+
File.open(spec_file_path(task), 'w') do |f|
|
51
53
|
f.write(test)
|
52
54
|
end
|
53
|
-
|
54
|
-
true
|
55
55
|
end
|
56
56
|
|
57
|
-
def submit_file_path(
|
58
|
-
"#{
|
57
|
+
def submit_file_path(task)
|
58
|
+
"#{task.contest.name}/#{task.code}.rb"
|
59
59
|
end
|
60
60
|
|
61
|
-
def spec_file_path(
|
62
|
-
"#{
|
61
|
+
def spec_file_path(task)
|
62
|
+
"#{task.contest.name}/spec/#{task.code}_spec.rb"
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
data/lib/green_day/contest.rb
CHANGED
@@ -7,13 +7,12 @@ module GreenDay
|
|
7
7
|
class Contest
|
8
8
|
attr_reader :atcoder_client, :name, :tasks
|
9
9
|
|
10
|
-
def initialize(contest_name)
|
11
|
-
client = AtcoderClient.new
|
10
|
+
def initialize(contest_name, client)
|
12
11
|
raise GreenDay::Error 'cant find contest' unless client.contest_exist?(contest_name)
|
13
12
|
|
14
13
|
@name = contest_name
|
15
|
-
@tasks = client.fetch_task_codes(self)
|
16
|
-
Task.new(self, task_code)
|
14
|
+
@tasks = Parallel.map(client.fetch_task_codes(self)) do |task_code|
|
15
|
+
Task.new(self, task_code, client)
|
17
16
|
end
|
18
17
|
end
|
19
18
|
end
|
data/lib/green_day/task.rb
CHANGED
@@ -2,27 +2,21 @@
|
|
2
2
|
|
3
3
|
module GreenDay
|
4
4
|
class Task
|
5
|
-
attr_reader :contest, :code, :
|
6
|
-
|
5
|
+
attr_reader :contest, :code, :sample_answers
|
6
|
+
|
7
|
+
def initialize(contest, code, client)
|
7
8
|
@contest = contest
|
8
9
|
@code = code
|
9
|
-
@
|
10
|
+
@sample_answers = create_sample_answers(client)
|
10
11
|
end
|
11
12
|
|
12
13
|
private
|
13
14
|
|
14
|
-
def
|
15
|
-
client = AtcoderClient.new
|
16
|
-
|
15
|
+
def create_sample_answers(client)
|
17
16
|
input_samples, output_samples =
|
18
17
|
client.fetch_inputs_and_outputs(contest, self)
|
19
18
|
|
20
|
-
|
21
|
-
input_samples.zip(output_samples).each do |input, output|
|
22
|
-
hash[input] = output
|
23
|
-
end
|
24
|
-
|
25
|
-
hash
|
19
|
+
input_samples.zip(output_samples).to_h
|
26
20
|
end
|
27
21
|
end
|
28
22
|
end
|
@@ -6,8 +6,6 @@ module GreenDay
|
|
6
6
|
|
7
7
|
def build_test(submit_file_path, input_output_hash)
|
8
8
|
<<~SPEC
|
9
|
-
require 'rspec'
|
10
|
-
|
11
9
|
RSpec.describe 'test' do
|
12
10
|
#{input_output_hash.map { |input, output| build_example(submit_file_path, input, output) }.join("\n")}
|
13
11
|
end
|
@@ -26,6 +24,8 @@ module GreenDay
|
|
26
24
|
end
|
27
25
|
|
28
26
|
def unify_cr_lf(string)
|
27
|
+
return unless string # たまに画像で例を出してくるとsampleの文字がなくなる
|
28
|
+
|
29
29
|
string.gsub(/\R/, "\n").dump
|
30
30
|
end
|
31
31
|
|
data/lib/green_day/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: green_day
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- qwyng
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: colorize
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: faraday
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,19 +67,19 @@ dependencies:
|
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
70
|
+
name: parallel
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- - "
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
75
|
+
version: '0'
|
62
76
|
type: :runtime
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- - "
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: thor
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,20 @@ dependencies:
|
|
80
94
|
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: webrick
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: bundler
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +122,20 @@ dependencies:
|
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '2.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: codecov
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
140
|
name: dotenv
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +164,20 @@ dependencies:
|
|
122
164
|
- - ">="
|
123
165
|
- !ruby/object:Gem::Version
|
124
166
|
version: 12.3.3
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rspec
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '3.0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '3.0'
|
125
181
|
- !ruby/object:Gem::Dependency
|
126
182
|
name: rubocop
|
127
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +192,34 @@ dependencies:
|
|
136
192
|
- - ">="
|
137
193
|
- !ruby/object:Gem::Version
|
138
194
|
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: rubocop-rake
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: rubocop-rspec
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
139
223
|
description: CLI tool for AtCoder and Ruby
|
140
224
|
email:
|
141
225
|
- ikusawasi@gmail.com
|
@@ -162,7 +246,6 @@ files:
|
|
162
246
|
- lib/green_day/atcoder_client.rb
|
163
247
|
- lib/green_day/cli.rb
|
164
248
|
- lib/green_day/contest.rb
|
165
|
-
- lib/green_day/snippet_builder.rb
|
166
249
|
- lib/green_day/task.rb
|
167
250
|
- lib/green_day/test_builder.rb
|
168
251
|
- lib/green_day/version.rb
|
@@ -180,14 +263,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
180
263
|
requirements:
|
181
264
|
- - ">="
|
182
265
|
- !ruby/object:Gem::Version
|
183
|
-
version:
|
266
|
+
version: 2.7.1
|
184
267
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
268
|
requirements:
|
186
269
|
- - ">="
|
187
270
|
- !ruby/object:Gem::Version
|
188
271
|
version: '0'
|
189
272
|
requirements: []
|
190
|
-
rubygems_version: 3.
|
273
|
+
rubygems_version: 3.2.3
|
191
274
|
signing_key:
|
192
275
|
specification_version: 4
|
193
276
|
summary: CLI tool for AtCoder and Ruby
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module SnippetBuilder
|
4
|
-
INCREASE_STACK_SIZE_SNIPPET =
|
5
|
-
"ENV[Z = 'RUBY_THREAD_VM_STACK_SIZE'] || exec( { Z => '50000000' },'ruby',$0)"
|
6
|
-
MULTIPLE_LINE_INPUT_SNIPPET = 'readlines.map(&:chomp!).map { |e| e.split.map(&:to_i) }'
|
7
|
-
ARRAY_INPUT_SNIPPET = 'gets.split.map(&:to_i)'
|
8
|
-
|
9
|
-
module_function
|
10
|
-
|
11
|
-
def build
|
12
|
-
[INCREASE_STACK_SIZE_SNIPPET, MULTIPLE_LINE_INPUT_SNIPPET, ARRAY_INPUT_SNIPPET]
|
13
|
-
.map { |snippet| '# ' + snippet }
|
14
|
-
.join("\n") + "\n"
|
15
|
-
end
|
16
|
-
end
|