circuits 0.2.6 → 0.3.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzJiYjI2N2YzMjI5ZDJmOGQ0YjM4NDg5YzQzYjFlYjgzNTQ3Yjc5Nw==
4
+ NzMwZGNkMDQ1ZmY2ZTVlMjhjZjA1ODUyZTFmNDc1OTMyZTA2YmM1Mw==
5
5
  data.tar.gz: !binary |-
6
- MThiMDgxYzExOTY1YTk1ZGNlNTc2OTc3MTQ2ZjA4ZDdhMGY5NThlNw==
6
+ M2ZjMmNmYzM5OGExZjAxMWU0MjI3NzRlZTYyY2QzYWVjNjI1MDc0Zg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODhlMWYxZTllZTIzNDA5NTBlZGM1ZmJiMGExZDFmYWMyOTkzNWIzNDA5NTFm
10
- Y2JiNWVlOThmZGJiNzMwYTE1NWZmOGU3NGU0YzY3ZGRlNGMxYzg0MjUwNjRk
11
- MDMzYTg2YzdiMTM3NTA5NWZlYTg5Zjg5ZmQxOThlMTVjNTQxMDQ=
9
+ YWJkYmY2NTE1YWYzMWU0OTk2NjIzZDNkYTY1MTE3NDEzOTkzZDg5MThlMzZh
10
+ YjhiNmE5NjRmYTRhZDNmNTE4Yjc0ZDllZTY3OGIxM2Q4MjMyZmM1YWU3ZjM1
11
+ N2FlNTg1YWNlNWQ5NTFjZjEwOTlhOTdjNzRmZWFkYWIwZWZlZDU=
12
12
  data.tar.gz: !binary |-
13
- NzJkMjFhYzI1YjI2MWIwMTA4ZDc1Y2I2NzhkNzI2ZjBkNDdmNzM3MzM3MDEw
14
- YWE1ZmZmYWE4NTk0NWM5ZTc4M2ZlMDFmOWI5N2Q2ZjRiNDJhNmVmMGVkNTNh
15
- N2Q1MGMwMzA0YzkxNTUyNzBhOWZhYzQyMGZmMWFiMjMwNDI3Yzg=
13
+ OWNmNzVkMTQyMWQ3MWJjNDFlNjJkZGZmYjZjYzQ1OGU5NGY5Y2JjNGM2ODA4
14
+ MTRjOWM5NjI3MWQ3OWJmZWRmZTBkMGUxZjI0YjRmZDg1NGE2M2I4YTE3ZjZh
15
+ YjdlYTRkMDI2OGNhMmVkZWEzOTc1NzU2NTJlZDUxNjBlODc1MGY=
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --color
2
+ --format doc
2
3
  --require spec_helper
data/README.md CHANGED
@@ -2,6 +2,7 @@
2
2
  [![Gem Version](https://badge.fury.io/rb/circuits.svg)](https://badge.fury.io/rb/circuits)
3
3
  [![Coverage Status](https://coveralls.io/repos/meringu/circuits/badge.svg?branch=master&service=github)](https://coveralls.io/github/meringu/circuits?branch=master)
4
4
  [![Code Climate](https://codeclimate.com/github/meringu/circuits/badges/gpa.svg)](https://codeclimate.com/github/meringu/circuits)
5
+ [![Dependency Status](https://gemnasium.com/meringu/circuits.svg)](https://gemnasium.com/meringu/circuits)
5
6
  [![docs](http://inch-ci.org/github/meringu/circuits.svg?branch=master)](http://inch-ci.org/github/meringu/circuits)
6
7
 
7
8
  # Circuits
@@ -50,7 +51,7 @@ and_gate.outputs[0].get # false
50
51
 
51
52
  ```ruby
52
53
  and_gate = Circuits::Component::And.new
53
- not_gate = Circuits::Component::And.new(inputs: [and_gate.outputs[0])
54
+ not_gate = Circuits::Component::Not.new(inputs: [and_gate.outputs[0]])
54
55
  ```
55
56
 
56
57
  ## Contributing
data/Rakefile CHANGED
@@ -1,6 +1,23 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rspec/core/rake_task'
3
+ require 'rubocop/rake_task'
4
+ require 'reek/rake/task'
5
+ require 'yard'
3
6
 
4
7
  RSpec::Core::RakeTask.new(:spec)
5
8
 
6
9
  task default: :spec
10
+
11
+ RuboCop::RakeTask.new(:rubocop) do |task|
12
+ task.patterns = ['lib/**/*.rb']
13
+ # only show the files with failures
14
+ task.formatters = ['files']
15
+ end
16
+
17
+ Reek::Rake::Task.new
18
+
19
+ task lint: [:rubocop, :reek]
20
+
21
+ YARD::Rake::YardocTask.new(:yard) do |t|
22
+ t.stats_options = ['--list-undoc']
23
+ end
data/circuits.gemspec CHANGED
@@ -21,4 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency 'coveralls'
22
22
  spec.add_development_dependency 'rake', '~> 10.0'
23
23
  spec.add_development_dependency 'rspec', '~> 3.3'
24
+ spec.add_development_dependency 'rubocop', '~> 0.34'
25
+ spec.add_development_dependency 'reek', '~> 3.5'
26
+ spec.add_development_dependency 'yard', '~> 0.8.7'
24
27
  end
@@ -8,7 +8,7 @@ module Circuits
8
8
 
9
9
  # Sets the output to be the result of a logical XNOR of the inputs
10
10
  def tick
11
- outputs[0].set(inputs[0].get == inputs[1].get)
11
+ outputs[0].set(!inputs.map(&:get).inject(:^))
12
12
  end
13
13
 
14
14
  private
@@ -8,7 +8,7 @@ module Circuits
8
8
 
9
9
  # Sets the output to be the result of a logical XOR of the inputs
10
10
  def tick
11
- outputs[0].set(inputs[0].get != inputs[1].get)
11
+ outputs[0].set(inputs.map(&:get).inject(:^))
12
12
  end
13
13
 
14
14
  private
@@ -8,10 +8,13 @@ module Circuits
8
8
  module Component
9
9
  # Creates the Component with inputs and outputs
10
10
  # @param opts [Hash] options to create the Component with
11
- # @option opts [Array<Input>] :inputs The array of inputs to use
11
+ # @option opts [Array<Input>, FixNum] :inputs The array of inputs to use, or
12
+ # the number of inputs to create
12
13
  def initialize(opts = {})
13
- @inputs = opts[:inputs] ||
14
- input_count.times.collect { Circuits::Terminal::Input.new }
14
+ @inputs = opts[:inputs] if opts[:inputs].is_a? Array
15
+ @inputs = create_inputs opts[:inputs] if opts[:inputs].is_a? Integer
16
+ @inputs = create_inputs input_count if opts[:inputs].nil?
17
+
15
18
  @outputs = output_count.times.collect { Circuits::Terminal::Output.new }
16
19
  setup
17
20
  end
@@ -41,6 +44,17 @@ module Circuits
41
44
  def output_count
42
45
  fail NotImplementedError
43
46
  end
47
+
48
+ # Creates an array of N inputs, where N is equal to or greater than the
49
+ # default number of inputs for this component
50
+ # @param n [FixNum] The number of inputs to create
51
+ # @return [Array<Input>] An array of inputs
52
+ def create_inputs(n)
53
+ if n < input_count
54
+ fail ArgumentError, "Invalid number of inputs, #{self.class} requires at least #{input_count} inputs"
55
+ end
56
+ n.times.collect { Circuits::Terminal::Input.new }
57
+ end
44
58
 
45
59
  def setup
46
60
  end
@@ -1,5 +1,5 @@
1
1
  # Circuits allows you to express logical circuits in code
2
2
  module Circuits
3
3
  # The version of the Circuits gem
4
- VERSION = '0.2.6'
4
+ VERSION = '0.3.0'
5
5
  end
@@ -55,5 +55,53 @@ describe Circuits::Component::And do
55
55
  end
56
56
  end
57
57
  end
58
+
59
+ [3, 4, 8].each do |n|
60
+ context "with #{n} inputs" do
61
+ subject { Circuits::Component::And.new inputs: n }
62
+
63
+ before do
64
+ n.times { |x| subject.inputs[x].set inputs[x] }
65
+ end
66
+
67
+ context 'when all inputs are true' do
68
+ let(:inputs) { n.times.collect { true } }
69
+
70
+ it '= true' do
71
+ subject.tick
72
+ subject.tock
73
+ expect(subject.outputs[0].get).to eq(true)
74
+ end
75
+ end
76
+
77
+ context 'when all inputs are false' do
78
+ let(:inputs) { n.times.collect { false } }
79
+
80
+ it '= false' do
81
+ subject.tick
82
+ subject.tock
83
+ expect(subject.outputs[0].get).to eq(false)
84
+ end
85
+ end
86
+
87
+ context 'when any input is false' do
88
+ n.times do |x|
89
+ context "when input #{x} is false" do
90
+ let(:inputs) do
91
+ inputs = n.times.collect { true }
92
+ inputs[x] = false
93
+ inputs
94
+ end
95
+
96
+ it '= false' do
97
+ subject.tick
98
+ subject.tock
99
+ expect(subject.outputs[0].get).to eq(false)
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
58
106
  end
59
107
  end
@@ -55,5 +55,52 @@ describe Circuits::Component::Nand do
55
55
  end
56
56
  end
57
57
  end
58
+ [3, 4, 8].each do |n|
59
+ context "with #{n} inputs" do
60
+ subject { Circuits::Component::Nand.new inputs: n }
61
+
62
+ before do
63
+ n.times { |x| subject.inputs[x].set inputs[x] }
64
+ end
65
+
66
+ context 'when all inputs are true' do
67
+ let(:inputs) { n.times.collect { true } }
68
+
69
+ it '= false' do
70
+ subject.tick
71
+ subject.tock
72
+ expect(subject.outputs[0].get).to eq(false)
73
+ end
74
+ end
75
+
76
+ context 'when all inputs are false' do
77
+ let(:inputs) { n.times.collect { false } }
78
+
79
+ it '= true' do
80
+ subject.tick
81
+ subject.tock
82
+ expect(subject.outputs[0].get).to eq(true)
83
+ end
84
+ end
85
+
86
+ context 'when any input is false' do
87
+ n.times do |x|
88
+ context "when input #{x} is false" do
89
+ let(:inputs) do
90
+ inputs = n.times.collect { true }
91
+ inputs[x] = false
92
+ inputs
93
+ end
94
+
95
+ it '= true' do
96
+ subject.tick
97
+ subject.tock
98
+ expect(subject.outputs[0].get).to eq(true)
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
58
105
  end
59
106
  end
@@ -55,5 +55,52 @@ describe Circuits::Component::Nor do
55
55
  end
56
56
  end
57
57
  end
58
+ [3, 4, 8].each do |n|
59
+ context "with #{n} inputs" do
60
+ subject { Circuits::Component::Nor.new inputs: n }
61
+
62
+ before do
63
+ n.times { |x| subject.inputs[x].set inputs[x] }
64
+ end
65
+
66
+ context 'when all inputs are true' do
67
+ let(:inputs) { n.times.collect { true } }
68
+
69
+ it '= false' do
70
+ subject.tick
71
+ subject.tock
72
+ expect(subject.outputs[0].get).to eq(false)
73
+ end
74
+ end
75
+
76
+ context 'when all inputs are false' do
77
+ let(:inputs) { n.times.collect { false } }
78
+
79
+ it '= true' do
80
+ subject.tick
81
+ subject.tock
82
+ expect(subject.outputs[0].get).to eq(true)
83
+ end
84
+ end
85
+
86
+ context 'when any input is false' do
87
+ n.times do |x|
88
+ context "when input #{x} is false" do
89
+ let(:inputs) do
90
+ inputs = n.times.collect { true }
91
+ inputs[x] = false
92
+ inputs
93
+ end
94
+
95
+ it '= false' do
96
+ subject.tick
97
+ subject.tock
98
+ expect(subject.outputs[0].get).to eq(false)
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
58
105
  end
59
106
  end
@@ -55,5 +55,52 @@ describe Circuits::Component::Or do
55
55
  end
56
56
  end
57
57
  end
58
+ [3, 4, 8].each do |n|
59
+ context "with #{n} inputs" do
60
+ subject { Circuits::Component::Or.new inputs: n }
61
+
62
+ before do
63
+ n.times { |x| subject.inputs[x].set inputs[x] }
64
+ end
65
+
66
+ context 'when all inputs are true' do
67
+ let(:inputs) { n.times.collect { true } }
68
+
69
+ it '= true' do
70
+ subject.tick
71
+ subject.tock
72
+ expect(subject.outputs[0].get).to eq(true)
73
+ end
74
+ end
75
+
76
+ context 'when all inputs are false' do
77
+ let(:inputs) { n.times.collect { false } }
78
+
79
+ it '= false' do
80
+ subject.tick
81
+ subject.tock
82
+ expect(subject.outputs[0].get).to eq(false)
83
+ end
84
+ end
85
+
86
+ context 'when any input is false' do
87
+ n.times do |x|
88
+ context "when input #{x} is false" do
89
+ let(:inputs) do
90
+ inputs = n.times.collect { true }
91
+ inputs[x] = false
92
+ inputs
93
+ end
94
+
95
+ it '= true' do
96
+ subject.tick
97
+ subject.tock
98
+ expect(subject.outputs[0].get).to eq(true)
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
58
105
  end
59
106
  end
@@ -55,5 +55,121 @@ describe Circuits::Component::Xnor do
55
55
  end
56
56
  end
57
57
  end
58
+ context 'when the number of inputs is even' do
59
+ [2, 4, 8].each do |n|
60
+ context "with #{n} inputs" do
61
+ subject { Circuits::Component::Xnor.new inputs: n }
62
+
63
+ before do
64
+ n.times { |x| subject.inputs[x].set inputs[x] }
65
+ end
66
+
67
+ context 'when all inputs are true' do
68
+ let(:inputs) { n.times.collect { true } }
69
+
70
+ it '= true' do
71
+ subject.tick
72
+ subject.tock
73
+ expect(subject.outputs[0].get).to eq(true)
74
+ end
75
+ end
76
+
77
+ context 'when all inputs are false' do
78
+ let(:inputs) { n.times.collect { false } }
79
+
80
+ it '= true' do
81
+ subject.tick
82
+ subject.tock
83
+ expect(subject.outputs[0].get).to eq(true)
84
+ end
85
+ end
86
+
87
+ context 'when any input is false' do
88
+ n.times do |x|
89
+ context "when input #{x} is false" do
90
+ let(:inputs) do
91
+ inputs = n.times.collect { true }
92
+ inputs[x] = false
93
+ inputs
94
+ end
95
+
96
+ it '= false' do
97
+ subject.tick
98
+ subject.tock
99
+ expect(subject.outputs[0].get).to eq(false)
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+ context 'when the number of inputs is odd' do
108
+ [3, 5, 7].each do |n|
109
+ context "with #{n} inputs" do
110
+ subject { Circuits::Component::Xnor.new inputs: n }
111
+
112
+ before do
113
+ n.times { |x| subject.inputs[x].set inputs[x] }
114
+ end
115
+
116
+ context 'when all inputs are true' do
117
+ let(:inputs) { n.times.collect { true } }
118
+
119
+ it '= false' do
120
+ subject.tick
121
+ subject.tock
122
+ expect(subject.outputs[0].get).to eq(false)
123
+ end
124
+ end
125
+
126
+ context 'when all inputs are false' do
127
+ let(:inputs) { n.times.collect { false } }
128
+
129
+ it '= true' do
130
+ subject.tick
131
+ subject.tock
132
+ expect(subject.outputs[0].get).to eq(true)
133
+ end
134
+ end
135
+
136
+ context 'when any input is false' do
137
+ n.times do |x|
138
+ context "when input #{x} is false" do
139
+ let(:inputs) do
140
+ inputs = n.times.collect { true }
141
+ inputs[x] = false
142
+ inputs
143
+ end
144
+
145
+ it '= true' do
146
+ subject.tick
147
+ subject.tock
148
+ expect(subject.outputs[0].get).to eq(true)
149
+ end
150
+ end
151
+ end
152
+ end
153
+
154
+ context 'when any input is true' do
155
+ n.times do |x|
156
+ context "when input #{x} is true" do
157
+ let(:inputs) do
158
+ inputs = n.times.collect { false }
159
+ inputs[x] = true
160
+ inputs
161
+ end
162
+
163
+ it '= false' do
164
+ subject.tick
165
+ subject.tock
166
+ expect(subject.outputs[0].get).to eq(false)
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
173
+ end
58
174
  end
59
175
  end
@@ -55,5 +55,121 @@ describe Circuits::Component::Xor do
55
55
  end
56
56
  end
57
57
  end
58
+ context 'when the number of inputs is even' do
59
+ [2, 4, 8].each do |n|
60
+ context "with #{n} inputs" do
61
+ subject { Circuits::Component::Xor.new inputs: n }
62
+
63
+ before do
64
+ n.times { |x| subject.inputs[x].set inputs[x] }
65
+ end
66
+
67
+ context 'when all inputs are true' do
68
+ let(:inputs) { n.times.collect { true } }
69
+
70
+ it '= false' do
71
+ subject.tick
72
+ subject.tock
73
+ expect(subject.outputs[0].get).to eq(false)
74
+ end
75
+ end
76
+
77
+ context 'when all inputs are false' do
78
+ let(:inputs) { n.times.collect { false } }
79
+
80
+ it '= false' do
81
+ subject.tick
82
+ subject.tock
83
+ expect(subject.outputs[0].get).to eq(false)
84
+ end
85
+ end
86
+
87
+ context 'when any input is false' do
88
+ n.times do |x|
89
+ context "when input #{x} is false" do
90
+ let(:inputs) do
91
+ inputs = n.times.collect { true }
92
+ inputs[x] = false
93
+ inputs
94
+ end
95
+
96
+ it '= true' do
97
+ subject.tick
98
+ subject.tock
99
+ expect(subject.outputs[0].get).to eq(true)
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+ context 'when the number of inputs is odd' do
108
+ [3, 5, 7].each do |n|
109
+ context "with #{n} inputs" do
110
+ subject { Circuits::Component::Xor.new inputs: n }
111
+
112
+ before do
113
+ n.times { |x| subject.inputs[x].set inputs[x] }
114
+ end
115
+
116
+ context 'when all inputs are true' do
117
+ let(:inputs) { n.times.collect { true } }
118
+
119
+ it '= true' do
120
+ subject.tick
121
+ subject.tock
122
+ expect(subject.outputs[0].get).to eq(true)
123
+ end
124
+ end
125
+
126
+ context 'when all inputs are false' do
127
+ let(:inputs) { n.times.collect { false } }
128
+
129
+ it '= false' do
130
+ subject.tick
131
+ subject.tock
132
+ expect(subject.outputs[0].get).to eq(false)
133
+ end
134
+ end
135
+
136
+ context 'when any input is false' do
137
+ n.times do |x|
138
+ context "when input #{x} is false" do
139
+ let(:inputs) do
140
+ inputs = n.times.collect { true }
141
+ inputs[x] = false
142
+ inputs
143
+ end
144
+
145
+ it '= false' do
146
+ subject.tick
147
+ subject.tock
148
+ expect(subject.outputs[0].get).to eq(false)
149
+ end
150
+ end
151
+ end
152
+ end
153
+
154
+ context 'when any input is true' do
155
+ n.times do |x|
156
+ context "when input #{x} is true" do
157
+ let(:inputs) do
158
+ inputs = n.times.collect { false }
159
+ inputs[x] = true
160
+ inputs
161
+ end
162
+
163
+ it '= true' do
164
+ subject.tick
165
+ subject.tock
166
+ expect(subject.outputs[0].get).to eq(true)
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
173
+ end
58
174
  end
59
175
  end
@@ -8,17 +8,67 @@ class MockComponent
8
8
  def initialize(opts = {})
9
9
  @outputs = opts[:outputs]
10
10
  end
11
+
12
+ def mock_input_count
13
+ input_count
14
+ end
15
+
16
+ def mock_output_count
17
+ output_count
18
+ end
19
+
20
+ def mock_create_inputs(n)
21
+ create_inputs(n)
22
+ end
11
23
  end
12
24
 
13
25
  describe Circuits::Component do
14
- describe '#tock' do
15
- let(:outputs) { [double('output')] }
26
+ let(:outputs) { [double('output')] }
27
+
28
+ subject { MockComponent.new(outputs: outputs) }
29
+
30
+ describe '#input_count' do
31
+ it 'is not implemented' do
32
+ expect { subject.mock_input_count }.to raise_error(NotImplementedError)
33
+ end
34
+ end
35
+
36
+ describe '#output_count' do
37
+ it 'is not implemented' do
38
+ expect { subject.mock_output_count }.to raise_error(NotImplementedError)
39
+ end
40
+ end
16
41
 
17
- subject { MockComponent.new(outputs: outputs) }
42
+ describe '#tick' do
43
+ it 'is not implemented' do
44
+ expect { subject.tick }.to raise_error(NotImplementedError)
45
+ end
46
+ end
18
47
 
48
+ describe '#tock' do
19
49
  it 'tocks the outputs' do
20
50
  expect(outputs[0]).to receive(:tock)
21
51
  subject.tock
22
52
  end
23
53
  end
54
+
55
+ describe '#create_inputs' do
56
+ before :each do
57
+ allow(subject).to receive(:input_count).and_return(2)
58
+ end
59
+
60
+ context 'when the given argument is less than the value of input count' do
61
+ it 'fails with an argument error' do
62
+ expect { subject.mock_create_inputs(0) }.to raise_error(ArgumentError)
63
+ end
64
+ end
65
+
66
+ context 'when given a valid number of inputs' do
67
+ [2, 4, 6].each do |n|
68
+ it "creates #{n} inputs" do
69
+ expect(subject.mock_create_inputs(n).size).to eq(n)
70
+ end
71
+ end
72
+ end
73
+ end
24
74
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: circuits
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henry Muru Paenga
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-23 00:00:00.000000000 Z
11
+ date: 2015-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,48 @@ dependencies:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '0.34'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '0.34'
83
+ - !ruby/object:Gem::Dependency
84
+ name: reek
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '3.5'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '3.5'
97
+ - !ruby/object:Gem::Dependency
98
+ name: yard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 0.8.7
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 0.8.7
69
111
  description:
70
112
  email:
71
113
  - meringu@gmail.com