transcore 0.0.4 → 0.0.6
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 +7 -0
- data/.gitignore +14 -0
- data/.rubocop.yml +57 -0
- data/Gemfile +2 -24
- data/README.md +12 -6
- data/Rakefile +5 -73
- data/bin/transcore +3 -3
- data/lib/transcore.rb +9 -9
- data/lib/transcore/command/convert.rb +78 -42
- data/lib/transcore/command/default.rb +2 -13
- data/lib/transcore/command/transpose.rb +34 -36
- data/lib/transcore/version.rb +3 -0
- data/spec/bin/transcore_spec.rb +20 -21
- data/spec/lib/transcore/command/convert_spec.rb +41 -43
- data/spec/lib/transcore/command/transpose_spec.rb +15 -17
- data/spec/lib/transcore_spec.rb +2 -2
- data/spec/spec_helper.rb +3 -37
- data/transcore.gemspec +20 -78
- metadata +88 -186
- data/VERSION +0 -1
@@ -1,57 +1,55 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
module Transcore
|
3
2
|
module Command
|
4
3
|
module Transpose
|
5
4
|
NEXT_TONE = {
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
5
|
+
'A' => 'A#',
|
6
|
+
'A#' => 'B',
|
7
|
+
'B' => 'C',
|
8
|
+
'C' => 'C#',
|
9
|
+
'C#' => 'D',
|
10
|
+
'D' => 'D#',
|
11
|
+
'D#' => 'E',
|
12
|
+
'E' => 'F',
|
13
|
+
'F' => 'F#',
|
14
|
+
'F#' => 'G',
|
15
|
+
'G' => 'G#',
|
16
|
+
'G#' => 'A'
|
18
17
|
}
|
19
|
-
|
20
|
-
def self.parse_opts(
|
21
|
-
|
18
|
+
|
19
|
+
def self.parse_opts(_argv)
|
20
|
+
{}
|
22
21
|
end
|
23
|
-
|
24
|
-
def self.run(argv, input_stream
|
25
|
-
params = self.parse_opts(argv)
|
22
|
+
|
23
|
+
def self.run(argv, input_stream = $stdin, output_stream = $stdout)
|
26
24
|
step = (argv.shift || 1).to_i
|
27
25
|
input = input_stream.read
|
28
|
-
|
29
|
-
input.gsub!(/ /,
|
30
|
-
input.gsub!(/ +$/,
|
31
|
-
input.gsub!(/(^|\s|\/|on)([ACDFG])#/,
|
32
|
-
|
33
|
-
input.gsub!(/(^|\s|\/|on)A♭/,
|
34
|
-
input.gsub!(/(^|\s|\/|on)B♭/,
|
35
|
-
input.gsub!(/(^|\s|\/|on)D♭/,
|
36
|
-
input.gsub!(/(^|\s|\/|on)E♭/,
|
37
|
-
input.gsub!(/(^|\s|\/|on)G♭/,
|
26
|
+
|
27
|
+
input.gsub!(/ /, ' ')
|
28
|
+
input.gsub!(/ +$/, '')
|
29
|
+
input.gsub!(/(^|\s|\/|on)([ACDFG])#/, '\\1\\2#')
|
30
|
+
|
31
|
+
input.gsub!(/(^|\s|\/|on)A♭/, '\\1G#')
|
32
|
+
input.gsub!(/(^|\s|\/|on)B♭/, '\\1A#')
|
33
|
+
input.gsub!(/(^|\s|\/|on)D♭/, '\\1C#')
|
34
|
+
input.gsub!(/(^|\s|\/|on)E♭/, '\\1D#')
|
35
|
+
input.gsub!(/(^|\s|\/|on)G♭/, '\\1F#')
|
38
36
|
step %= 12
|
39
37
|
rest = input
|
40
|
-
step.times do |
|
41
|
-
next_str =
|
38
|
+
step.times do |_i|
|
39
|
+
next_str = ''
|
42
40
|
while /(^|\s|\/|on)(A#|A|B|C#|C|D#|D|E|F#|F|G#|G)/ =~ rest
|
43
|
-
next_str += $` +
|
44
|
-
match_str =
|
41
|
+
next_str += $` + Regexp.last_match[1]
|
42
|
+
match_str = Regexp.last_match[2]
|
45
43
|
rest = $'
|
46
44
|
next_str += NEXT_TONE[match_str]
|
47
45
|
end
|
48
46
|
rest = next_str + rest
|
49
47
|
end
|
50
48
|
result = rest
|
51
|
-
|
49
|
+
|
52
50
|
output_stream.puts result
|
53
|
-
|
51
|
+
0
|
54
52
|
end
|
55
53
|
end
|
56
54
|
end
|
57
|
-
end
|
55
|
+
end
|
data/spec/bin/transcore_spec.rb
CHANGED
@@ -1,51 +1,50 @@
|
|
1
|
-
|
2
|
-
require "spec_helper"
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
|
-
describe
|
5
|
-
context
|
6
|
-
input =
|
7
|
-
context
|
3
|
+
describe 'bin/transcore' do
|
4
|
+
context 'when command = transpose' do
|
5
|
+
input = 'C Am F G7'
|
6
|
+
context 'when parameter = 1' do
|
8
7
|
context "when input is '#{input}'" do
|
9
|
-
it "should output
|
8
|
+
it "should output 'C# A#m F# G#7'" do
|
10
9
|
result = `echo '#{input}' | ruby -I lib ./bin/transcore transpose 1`
|
11
10
|
result.chomp!
|
12
|
-
result.should ==
|
11
|
+
result.should == 'C# A#m F# G#7'
|
13
12
|
end
|
14
13
|
end
|
15
14
|
end
|
16
15
|
end
|
17
16
|
|
18
|
-
context
|
19
|
-
context
|
20
|
-
input =
|
17
|
+
context 'when command = convert' do
|
18
|
+
context 'when sub-command = flat' do
|
19
|
+
input = 'F Dm A# C'
|
21
20
|
context "when input is '#{input}'" do
|
22
|
-
it "should output
|
21
|
+
it "should output 'F Dm B♭ C'" do
|
23
22
|
result = `echo '#{input}' | ruby -I lib ./bin/transcore convert flat`
|
24
23
|
result.chomp!
|
25
|
-
result.should ==
|
24
|
+
result.should == 'F Dm B♭ C'
|
26
25
|
end
|
27
26
|
end
|
28
27
|
end
|
29
28
|
end
|
30
29
|
|
31
|
-
context
|
32
|
-
input =
|
30
|
+
context 'when command = +1' do
|
31
|
+
input = 'C Am F G7'
|
33
32
|
context "when input is '#{input}'" do
|
34
|
-
it "should output
|
33
|
+
it "should output 'C# A#m F# G#7'" do
|
35
34
|
result = `echo '#{input}' | ruby -I lib ./bin/transcore +1`
|
36
35
|
result.chomp!
|
37
|
-
result.should ==
|
36
|
+
result.should == 'C# A#m F# G#7'
|
38
37
|
end
|
39
38
|
end
|
40
39
|
end
|
41
40
|
|
42
|
-
context
|
43
|
-
input =
|
41
|
+
context 'when command = flat' do
|
42
|
+
input = 'F Dm A# C'
|
44
43
|
context "when input is '#{input}'" do
|
45
|
-
it "should output
|
44
|
+
it "should output 'F Dm B♭ C'" do
|
46
45
|
result = `echo '#{input}' | ruby -I lib ./bin/transcore flat`
|
47
46
|
result.chomp!
|
48
|
-
result.should ==
|
47
|
+
result.should == 'F Dm B♭ C'
|
49
48
|
end
|
50
49
|
end
|
51
50
|
end
|
@@ -1,59 +1,58 @@
|
|
1
|
-
|
2
|
-
require "spec_helper"
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
3
|
describe Transcore::Command::Convert do
|
5
|
-
describe
|
6
|
-
context "when argv =
|
7
|
-
context "when input =
|
8
|
-
it "should output
|
9
|
-
input =
|
4
|
+
describe '.run(argv, input_stream, output_stream)' do
|
5
|
+
context "when argv = 'flat'" do
|
6
|
+
context "when input = 'F Dm A# C'" do
|
7
|
+
it "should output 'F Dm B♭ C'" do
|
8
|
+
input = 'F Dm A# C'
|
10
9
|
input_read, input_write = *IO.pipe
|
11
10
|
output_read, output_write = *IO.pipe
|
12
11
|
input_write.puts input
|
13
12
|
input_write.close
|
14
|
-
Transcore::Command::Convert.run([
|
13
|
+
Transcore::Command::Convert.run(['flat'], input_read, output_write)
|
15
14
|
output_write.close
|
16
15
|
result = output_read.read
|
17
|
-
result.chomp.should
|
16
|
+
result.chomp.should eq 'F Dm B♭ C'
|
18
17
|
end
|
19
18
|
end
|
20
19
|
end
|
21
20
|
|
22
|
-
context "when argv =
|
23
|
-
context "when input =
|
24
|
-
it "should output
|
25
|
-
input =
|
21
|
+
context "when argv = 'sharp'" do
|
22
|
+
context "when input = 'F Dm B♭ C'" do
|
23
|
+
it "should output 'F Dm A# C'" do
|
24
|
+
input = 'F Dm B♭ C'
|
26
25
|
input_read, input_write = *IO.pipe
|
27
26
|
output_read, output_write = *IO.pipe
|
28
27
|
input_write.puts input
|
29
28
|
input_write.close
|
30
|
-
Transcore::Command::Convert.run([
|
29
|
+
Transcore::Command::Convert.run(['sharp'], input_read, output_write)
|
31
30
|
output_write.close
|
32
31
|
result = output_read.read
|
33
|
-
result.chomp.should
|
32
|
+
result.chomp.should eq 'F Dm A# C'
|
34
33
|
end
|
35
34
|
end
|
36
35
|
end
|
37
36
|
|
38
|
-
context "when argv =
|
39
|
-
context "when input =
|
40
|
-
it "should output
|
41
|
-
input =
|
37
|
+
context "when argv = 'doremi'" do
|
38
|
+
context "when input = 'CDEFGAB'" do
|
39
|
+
it "should output 'ドレミファソラシド'" do
|
40
|
+
input = 'CDEFGAB'
|
42
41
|
input_read, input_write = *IO.pipe
|
43
42
|
output_read, output_write = *IO.pipe
|
44
43
|
input_write.puts input
|
45
44
|
input_write.close
|
46
|
-
Transcore::Command::Convert.run([
|
45
|
+
Transcore::Command::Convert.run(['doremi'], input_read, output_write)
|
47
46
|
output_write.close
|
48
47
|
result = output_read.read
|
49
|
-
result.chomp.should
|
48
|
+
result.chomp.should eq 'ドレミファソラシ'
|
50
49
|
end
|
51
50
|
end
|
52
51
|
end
|
53
|
-
|
54
|
-
context "when argv =
|
55
|
-
context
|
56
|
-
it
|
52
|
+
|
53
|
+
context "when argv = 'text-score'" do
|
54
|
+
context 'when input is inline-chord html' do
|
55
|
+
it 'should output inline-chord score' do
|
57
56
|
input = <<-EOF
|
58
57
|
<p>
|
59
58
|
<span class="chord">C</span><span class="word">word1</span><span>Am</span><span>word2</span>
|
@@ -66,22 +65,22 @@ describe Transcore::Command::Convert do
|
|
66
65
|
output_read, output_write = *IO.pipe
|
67
66
|
input_write.puts input
|
68
67
|
input_write.close
|
69
|
-
Transcore::Command::Convert.run([
|
68
|
+
Transcore::Command::Convert.run(['text-score'], input_read, output_write)
|
70
69
|
output_write.close
|
71
70
|
result = output_read.read
|
72
|
-
|
71
|
+
|
73
72
|
result = result.split(/\r?\n/)
|
74
|
-
|
75
|
-
result.shift.should
|
76
|
-
result.shift.should
|
77
|
-
result.size.should
|
73
|
+
|
74
|
+
result.shift.should eq 'C word1 Am word2'
|
75
|
+
result.shift.should eq 'word3 F word4 G7 word5'
|
76
|
+
result.size.should eq 0
|
78
77
|
end
|
79
78
|
end
|
80
79
|
end
|
81
|
-
|
82
|
-
context "when argv =
|
83
|
-
context
|
84
|
-
it
|
80
|
+
|
81
|
+
context "when argv = 'text-score'" do
|
82
|
+
context 'when input is super-chord html' do
|
83
|
+
it 'should output super-chord score' do
|
85
84
|
input = <<-EOF
|
86
85
|
<p><span>C</span></p>
|
87
86
|
<p>word1</p>
|
@@ -92,21 +91,20 @@ describe Transcore::Command::Convert do
|
|
92
91
|
output_read, output_write = *IO.pipe
|
93
92
|
input_write.puts input
|
94
93
|
input_write.close
|
95
|
-
Transcore::Command::Convert.run([
|
94
|
+
Transcore::Command::Convert.run(['text-score'], input_read, output_write)
|
96
95
|
output_write.close
|
97
96
|
result = output_read.read
|
98
97
|
# STDERR.puts result
|
99
98
|
result = result.split(/\r?\n/)
|
100
99
|
# result.each do |line| STDERR.puts line.inspect end
|
101
|
-
result.shift.should
|
102
|
-
result.shift.should
|
103
|
-
result.shift.should
|
104
|
-
result.shift.should
|
105
|
-
result.size.should
|
100
|
+
result.shift.should eq 'C'
|
101
|
+
result.shift.should eq 'word1'
|
102
|
+
result.shift.should eq 'Am F G7'
|
103
|
+
result.shift.should eq 'word2 word3 word4'
|
104
|
+
result.size.should eq 0
|
106
105
|
end
|
107
106
|
end
|
108
107
|
end
|
109
|
-
|
108
|
+
|
110
109
|
end
|
111
110
|
end
|
112
|
-
|
@@ -1,39 +1,37 @@
|
|
1
|
-
|
2
|
-
require "spec_helper"
|
1
|
+
require 'spec_helper'
|
3
2
|
|
4
3
|
describe Transcore::Command::Transpose do
|
5
|
-
describe
|
6
|
-
context "when argv = #{[
|
7
|
-
context "when input = #{
|
8
|
-
it "should output #{
|
9
|
-
input =
|
4
|
+
describe '.run(argv, input_stream, output_stream)' do
|
5
|
+
context "when argv = #{['1'].inspect}" do
|
6
|
+
context "when input = #{'C Am F Gm/B'.inspect}" do
|
7
|
+
it "should output #{'C# A#m F# G#m/C'.inspect}" do
|
8
|
+
input = 'C Am F Gm/B'
|
10
9
|
input_read, input_write = *IO.pipe
|
11
10
|
output_read, output_write = *IO.pipe
|
12
11
|
input_write.puts input
|
13
12
|
input_write.close
|
14
|
-
Transcore::Command::Transpose.run([
|
13
|
+
Transcore::Command::Transpose.run(['1'], input_read, output_write)
|
15
14
|
output_write.close
|
16
15
|
result = output_read.read
|
17
|
-
result.chomp.should ==
|
16
|
+
result.chomp.should == 'C# A#m F# G#m/C'
|
18
17
|
end
|
19
18
|
end
|
20
19
|
end
|
21
|
-
|
22
|
-
context "when argv = #{[
|
23
|
-
context "when input = #{
|
24
|
-
it "should output #{
|
25
|
-
input =
|
20
|
+
|
21
|
+
context "when argv = #{['-1'].inspect}" do
|
22
|
+
context "when input = #{'C Am F Gm/B'.inspect}" do
|
23
|
+
it "should output #{'B G#m E F#m/A#'.inspect}" do
|
24
|
+
input = 'C Am F Gm/B'
|
26
25
|
input_read, input_write = *IO.pipe
|
27
26
|
output_read, output_write = *IO.pipe
|
28
27
|
input_write.puts input
|
29
28
|
input_write.close
|
30
|
-
Transcore::Command::Transpose.run([
|
29
|
+
Transcore::Command::Transpose.run(['-1'], input_read, output_write)
|
31
30
|
output_write.close
|
32
31
|
result = output_read.read
|
33
|
-
result.chomp.should ==
|
32
|
+
result.chomp.should == 'B G#m E F#m/A#'
|
34
33
|
end
|
35
34
|
end
|
36
35
|
end
|
37
36
|
end
|
38
37
|
end
|
39
|
-
|
data/spec/lib/transcore_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,37 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require "simplecov-rcov"
|
5
|
-
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
|
6
|
-
SimpleCov.start
|
7
|
-
end
|
8
|
-
|
9
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
10
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
11
|
-
require "rspec"
|
12
|
-
require "transcore"
|
13
|
-
require "tempfile"
|
14
|
-
|
15
|
-
# Requires supporting files with custom matchers and macros, etc,
|
16
|
-
# in ./support/ and its subdirectories.
|
17
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
18
|
-
|
19
|
-
RSpec.configure do |config|
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
module Transcore
|
24
|
-
TRANSCORE_HOME = File.expand_path(File.dirname(__FILE__) + "/..")
|
25
|
-
REDIRECT = {}
|
26
|
-
end
|
27
|
-
|
28
|
-
Transcore.logger = Logger.new(STDERR)
|
29
|
-
if File.exist?('/tmp/transcore.debug') then
|
30
|
-
Transcore.logger.level = Logger::DEBUG
|
31
|
-
Transcore::REDIRECT[:stdout] = nil
|
32
|
-
Transcore::REDIRECT[:stderr] = nil
|
33
|
-
else
|
34
|
-
Transcore.logger.level = Logger::ERROR
|
35
|
-
Transcore::REDIRECT[:stdout] = "> /dev/null"
|
36
|
-
Transcore::REDIRECT[:stderr] = "2> /dev/null"
|
37
|
-
end
|
1
|
+
require 'rspec/collection_matchers'
|
2
|
+
require 'rspec/its'
|
3
|
+
require 'transcore'
|
data/transcore.gemspec
CHANGED
@@ -1,82 +1,24 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'transcore/version'
|
5
4
|
|
6
|
-
Gem::Specification.new do |
|
7
|
-
|
8
|
-
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'transcore'
|
7
|
+
spec.version = Transcore::VERSION
|
8
|
+
spec.authors = ['haracane']
|
9
|
+
spec.email = ['haracane@gmail.com']
|
10
|
+
spec.summary = 'transcore gem'
|
11
|
+
spec.description = 'transcore gem'
|
12
|
+
spec.homepage = ''
|
13
|
+
spec.license = 'MIT'
|
9
14
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
s.email = "haracane@gmail.com"
|
15
|
-
s.executables = ["transcore"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"LICENSE.txt",
|
18
|
-
"README.md"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
".document",
|
22
|
-
".rspec",
|
23
|
-
"Gemfile",
|
24
|
-
"LICENSE.txt",
|
25
|
-
"README.md",
|
26
|
-
"Rakefile",
|
27
|
-
"VERSION",
|
28
|
-
"bin/transcore",
|
29
|
-
"lib/transcore.rb",
|
30
|
-
"lib/transcore/command/convert.rb",
|
31
|
-
"lib/transcore/command/default.rb",
|
32
|
-
"lib/transcore/command/transpose.rb",
|
33
|
-
"spec/bin/transcore_spec.rb",
|
34
|
-
"spec/lib/transcore/command/convert_spec.rb",
|
35
|
-
"spec/lib/transcore/command/transpose_spec.rb",
|
36
|
-
"spec/lib/transcore_spec.rb",
|
37
|
-
"spec/spec_helper.rb",
|
38
|
-
"transcore.gemspec"
|
39
|
-
]
|
40
|
-
s.homepage = "http://github.com/haracane/transcore"
|
41
|
-
s.licenses = ["MIT"]
|
42
|
-
s.require_paths = ["lib"]
|
43
|
-
s.rubygems_version = "1.8.24"
|
44
|
-
s.summary = "transcore RubyGem"
|
15
|
+
spec.files = `git ls-files -z`.split("\x0")
|
16
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
18
|
+
spec.require_paths = ['lib']
|
45
19
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
s.add_development_dependency(%q<rspec>, ["~> 2.12.0"])
|
51
|
-
s.add_development_dependency(%q<yard>, ["~> 0.8.3"])
|
52
|
-
s.add_development_dependency(%q<redcarpet>, ["~> 2.2.2"])
|
53
|
-
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
54
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.2.3"])
|
55
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
56
|
-
s.add_development_dependency(%q<rcov>, ["~> 1.0.0"])
|
57
|
-
s.add_development_dependency(%q<ci_reporter>, ["~> 1.8.3"])
|
58
|
-
s.add_development_dependency(%q<flog>, ["~> 3.2.1"])
|
59
|
-
else
|
60
|
-
s.add_dependency(%q<rspec>, ["~> 2.12.0"])
|
61
|
-
s.add_dependency(%q<yard>, ["~> 0.8.3"])
|
62
|
-
s.add_dependency(%q<redcarpet>, ["~> 2.2.2"])
|
63
|
-
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
64
|
-
s.add_dependency(%q<bundler>, ["~> 1.2.3"])
|
65
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
66
|
-
s.add_dependency(%q<rcov>, ["~> 1.0.0"])
|
67
|
-
s.add_dependency(%q<ci_reporter>, ["~> 1.8.3"])
|
68
|
-
s.add_dependency(%q<flog>, ["~> 3.2.1"])
|
69
|
-
end
|
70
|
-
else
|
71
|
-
s.add_dependency(%q<rspec>, ["~> 2.12.0"])
|
72
|
-
s.add_dependency(%q<yard>, ["~> 0.8.3"])
|
73
|
-
s.add_dependency(%q<redcarpet>, ["~> 2.2.2"])
|
74
|
-
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
75
|
-
s.add_dependency(%q<bundler>, ["~> 1.2.3"])
|
76
|
-
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
77
|
-
s.add_dependency(%q<rcov>, ["~> 1.0.0"])
|
78
|
-
s.add_dependency(%q<ci_reporter>, ["~> 1.8.3"])
|
79
|
-
s.add_dependency(%q<flog>, ["~> 3.2.1"])
|
80
|
-
end
|
20
|
+
spec.add_development_dependency 'bundler'
|
21
|
+
spec.add_development_dependency 'rake'
|
22
|
+
spec.add_development_dependency 'rspec'
|
23
|
+
spec.add_development_dependency 'rubocop'
|
81
24
|
end
|
82
|
-
|