bis 0.1.1 → 0.1.2
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/README.md +7 -0
- data/lib/bis/conversion.rb +7 -1
- data/lib/bis/version.rb +1 -1
- data/lib/bis.rb +75 -62
- data/spec/bis_spec.rb +215 -38
- data/spec/spec_helper.rb +0 -4
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61336b18bc5e7fd8daa89f0cee4a5d47b5c66859
|
4
|
+
data.tar.gz: 22444418a3a00b1a78caf0d370f429643e0b09e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26a5973b6e2376bad37eb55462442123eec989701cf0ce69bf63301938c1d5062747eb9898b96b01a167c564d971f2623e29ba189d591c314d2ad5a4835d322c
|
7
|
+
data.tar.gz: a5d6122cc1cde1e84952266449693a7e3c386db2f4a79b4c92746d634f3f6810a1308f36c09b09ab81f150ec9c286a8f4845e328a41096f09ae17ede598fd680
|
data/README.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Bis
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/bis)
|
4
|
+
[]
|
5
|
+
(https://travis-ci.org/fuadsaud/bis)
|
6
|
+
[]
|
7
|
+
(https://codeclimate.com/github/fuadsaud/bis)
|
8
|
+
|
9
|
+
|
3
10
|
A pure ruby bitset implementation.
|
4
11
|
|
5
12
|
## Installation
|
data/lib/bis/conversion.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
class Bis
|
2
2
|
module Conversion
|
3
|
+
private
|
4
|
+
|
3
5
|
def Bis(obj)
|
4
6
|
if obj.kind_of? Bis
|
5
7
|
obj
|
6
8
|
elsif obj.kind_of? Enumerable
|
7
9
|
Bis.from_enum(obj)
|
8
10
|
elsif obj.respond_to? :to_i
|
9
|
-
Bis.new(
|
11
|
+
Bis.new(64, value: obj.to_i)
|
10
12
|
else
|
11
13
|
fail TypeError, "#{obj.class} can't be coerced to Bis"
|
12
14
|
end
|
@@ -17,3 +19,7 @@ end
|
|
17
19
|
module Kernel
|
18
20
|
include Bis::Conversion
|
19
21
|
end
|
22
|
+
|
23
|
+
class Object
|
24
|
+
include Kernel
|
25
|
+
end
|
data/lib/bis/version.rb
CHANGED
data/lib/bis.rb
CHANGED
@@ -2,37 +2,35 @@ require 'bis/conversion'
|
|
2
2
|
require 'bis/version'
|
3
3
|
|
4
4
|
class Bis
|
5
|
-
|
6
|
-
|
7
|
-
attr_reader :size
|
5
|
+
include Enumerable
|
8
6
|
|
9
7
|
def self.from_enum(enum)
|
10
8
|
Bis.new(enum.size, value: enum.join.to_i(2))
|
11
9
|
end
|
12
10
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
11
|
+
attr_reader :size
|
12
|
+
alias_method :length, :size
|
13
|
+
alias_method :bitlength, :size # Ruby 2.1 Integer interoperability
|
17
14
|
|
18
|
-
|
19
|
-
|
15
|
+
def initialize(size, value: 0)
|
16
|
+
fail ArgumentError, 'size must be >= 0' if size < 0
|
20
17
|
|
21
|
-
|
18
|
+
@size = size.to_i
|
19
|
+
@store = value & ((1 << size) - 1)
|
22
20
|
end
|
23
21
|
|
24
22
|
def set(index)
|
25
|
-
|
23
|
+
new_with_same_size.(value: @store | 1 << index)
|
26
24
|
end
|
27
25
|
|
28
26
|
def clear(index)
|
29
|
-
|
27
|
+
new_with_same_size.(value: @store & (~(1 << index)))
|
30
28
|
end
|
31
29
|
|
32
30
|
def [](index)
|
33
|
-
|
34
|
-
|
35
|
-
|
31
|
+
with_valid_index index do |index|
|
32
|
+
@store[index]
|
33
|
+
end
|
36
34
|
end
|
37
35
|
|
38
36
|
# Not sure if it's a good idead to implement this.
|
@@ -45,22 +43,15 @@ class Bis
|
|
45
43
|
end
|
46
44
|
end
|
47
45
|
|
48
|
-
def
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
def <=>(other)
|
53
|
-
to_i <=> Bis(other).to_i
|
46
|
+
def concat(other)
|
47
|
+
size_and_value_for(other) do |other_size, other_value|
|
48
|
+
new.(size: size + other_size).(value: (to_i << other_size) | other_value)
|
49
|
+
end
|
54
50
|
end
|
55
51
|
|
56
|
-
def +(
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
case bit
|
61
|
-
when 1 then new_bis.(value: to_i << 1 | bit)
|
62
|
-
when 0 then new_bis.(value: to_i << 1)
|
63
|
-
end
|
52
|
+
def +(other)
|
53
|
+
size_and_value_for(other + to_i) do |result_size, result|
|
54
|
+
new.(size: result_size).(value: result)
|
64
55
|
end
|
65
56
|
end
|
66
57
|
|
@@ -92,44 +83,65 @@ class Bis
|
|
92
83
|
end
|
93
84
|
end
|
94
85
|
|
86
|
+
def each_byte
|
87
|
+
return enum_for :each_byte unless block_given?
|
88
|
+
|
89
|
+
(size / 8).times.reverse_each do |offset|
|
90
|
+
yield Bis.new(8, value: (to_i >> offset * 8) & ((1 << 8) - 1))
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def bytes
|
95
|
+
each_byte.to_a
|
96
|
+
end
|
97
|
+
|
95
98
|
def to_a
|
96
99
|
each.to_a
|
97
100
|
end
|
98
101
|
|
99
102
|
def to_i
|
100
|
-
|
103
|
+
@store
|
101
104
|
end
|
102
105
|
|
103
106
|
def to_s
|
104
107
|
to_a.join
|
105
108
|
end
|
106
109
|
|
107
|
-
def
|
108
|
-
|
110
|
+
def ==(other)
|
111
|
+
other == to_i
|
109
112
|
end
|
110
113
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
private
|
114
|
+
def ===(other)
|
115
|
+
to_i === other
|
116
|
+
end
|
115
117
|
|
116
|
-
def
|
117
|
-
|
118
|
-
@store[i] |= Integer(value >> (i * WORD_SIZE))
|
119
|
-
end
|
118
|
+
def <=>(other)
|
119
|
+
to_i <=> Bis(other).to_i
|
120
120
|
end
|
121
121
|
|
122
|
-
def
|
123
|
-
|
124
|
-
|
122
|
+
def coerce(other)
|
123
|
+
case other
|
124
|
+
when Integer
|
125
|
+
size_and_value_for(other) do |other_size, other_value|
|
126
|
+
[new.(size: other_size).(value: other_value), self]
|
127
|
+
end
|
128
|
+
else
|
129
|
+
fail TypeError, "#{ self.class } cannot be coerced into #{ other.class }"
|
125
130
|
end
|
131
|
+
end
|
126
132
|
|
127
|
-
|
133
|
+
def inspect
|
134
|
+
"<<#{ to_s }>> #{ to_i }"
|
128
135
|
end
|
129
136
|
|
137
|
+
protected
|
130
138
|
|
131
|
-
|
132
|
-
|
139
|
+
attr_writer :store
|
140
|
+
|
141
|
+
private
|
142
|
+
|
143
|
+
def size_and_value_for(bitset_or_integer)
|
144
|
+
yield bitlenght_for(bitset_or_integer), bitset_or_integer.to_i
|
133
145
|
end
|
134
146
|
|
135
147
|
def with_valid_bit(bit)
|
@@ -139,22 +151,11 @@ class Bis
|
|
139
151
|
end
|
140
152
|
end
|
141
153
|
|
142
|
-
def
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
new_with_same_size.().tap { |bis|
|
149
|
-
bis.store = @store.dup.tap { |s|
|
150
|
-
s[x] = s[x].send(change_operation_for(bit), 1 << y)
|
151
|
-
}
|
152
|
-
}
|
153
|
-
}
|
154
|
-
end
|
155
|
-
|
156
|
-
def change_operation_for(bit)
|
157
|
-
bit.zero? ? :^ : :|
|
154
|
+
def with_valid_index(index)
|
155
|
+
case index
|
156
|
+
when 0..@size then yield index
|
157
|
+
else fail ArgumentError, "index #{index} out of boudaries for #{self}"
|
158
|
+
end
|
158
159
|
end
|
159
160
|
|
160
161
|
def new_with_same_size
|
@@ -168,4 +169,16 @@ class Bis
|
|
168
169
|
}
|
169
170
|
}
|
170
171
|
end
|
172
|
+
|
173
|
+
def bitlenght_for(bitset_or_integer)
|
174
|
+
case bitset_or_integer
|
175
|
+
when 0..1 then 1
|
176
|
+
when 2 then 2
|
177
|
+
when Integer then Math.log2(bitset_or_integer).ceil
|
178
|
+
when Bis then bitset_or_integer.size
|
179
|
+
else fail ArgumentError, 'cannot resolve a bitlength'
|
180
|
+
"#{ bitset_or_integer }. Must be either Integer"
|
181
|
+
'or Bis'
|
182
|
+
end
|
183
|
+
end
|
171
184
|
end
|
data/spec/bis_spec.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Bis do
|
4
|
-
let(:size) { Bis::WORD_SIZE }
|
5
|
-
|
6
4
|
it('has a version') { expect(Bis::VERSION).to be_a String }
|
7
5
|
|
8
6
|
describe '.new' do
|
@@ -21,22 +19,40 @@ describe Bis do
|
|
21
19
|
end
|
22
20
|
|
23
21
|
context 'with size and value' do
|
24
|
-
let(:value) { 10 }
|
25
|
-
|
26
22
|
subject { Bis.new(size, value: value) }
|
27
23
|
|
28
|
-
|
29
|
-
|
24
|
+
context 'with a bitset big enough to fit given size' do
|
25
|
+
let(:size) { 16 }
|
26
|
+
let(:value) { 10 }
|
27
|
+
|
28
|
+
it 'is as big as the passed size' do
|
29
|
+
expect(subject.size).to eq size
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'has the bits set to the given value' do
|
33
|
+
expect(subject).to eq value
|
34
|
+
end
|
30
35
|
end
|
31
36
|
|
32
|
-
|
33
|
-
|
37
|
+
context 'with value overflowing the size' do
|
38
|
+
let(:size) { 3 }
|
39
|
+
let(:value) { 10 }
|
40
|
+
subject { Bis.new(size, value: value) }
|
41
|
+
|
42
|
+
it 'is as big as the passed size' do
|
43
|
+
expect(subject.size).to eq size
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'truncates the given value to fit in the given biy length' do
|
47
|
+
expect(subject.to_i).to eq 2
|
48
|
+
end
|
34
49
|
end
|
35
50
|
end
|
36
51
|
end
|
37
52
|
|
38
53
|
describe '#==' do
|
39
54
|
context 'with an integer' do
|
55
|
+
let(:size) { 16 }
|
40
56
|
let(:value) { 16 }
|
41
57
|
|
42
58
|
subject { Bis.new(size, value: value) }
|
@@ -63,6 +79,7 @@ describe Bis do
|
|
63
79
|
end
|
64
80
|
|
65
81
|
context 'small numbers' do
|
82
|
+
let(:size) { 16 }
|
66
83
|
let(:value) { 10 }
|
67
84
|
|
68
85
|
subject { Bis.new(size, value: value) }
|
@@ -75,16 +92,17 @@ describe Bis do
|
|
75
92
|
context 'large numbers' do
|
76
93
|
let(:size) { 65 }
|
77
94
|
|
78
|
-
subject { Bis.new(size).set(
|
95
|
+
subject { Bis.new(size).set(16) }
|
79
96
|
|
80
97
|
it 'returns the bit at the given position' do
|
81
|
-
expect(subject[
|
98
|
+
expect(subject[16]).to eq 1
|
82
99
|
end
|
83
100
|
end
|
84
101
|
end
|
85
102
|
|
86
103
|
describe '#[]=', pending: "Not sure if it's a good idea to implement this" do
|
87
104
|
context 'invalid argument' do
|
105
|
+
let(:size) { 16 }
|
88
106
|
subject { Bis.new(size) }
|
89
107
|
|
90
108
|
it 'fails' do
|
@@ -93,6 +111,7 @@ describe Bis do
|
|
93
111
|
end
|
94
112
|
|
95
113
|
context 'valid argument' do
|
114
|
+
let(:size) { 16 }
|
96
115
|
let(:value) { 7 }
|
97
116
|
|
98
117
|
subject { Bis.new(size, value: 7)[index] = argument }
|
@@ -118,6 +137,7 @@ describe Bis do
|
|
118
137
|
end
|
119
138
|
|
120
139
|
describe '#set' do
|
140
|
+
let(:size) { 16 }
|
121
141
|
let(:before) { 0b101 }
|
122
142
|
let(:after) { 0b111 }
|
123
143
|
|
@@ -129,6 +149,7 @@ describe Bis do
|
|
129
149
|
end
|
130
150
|
|
131
151
|
describe '#clear' do
|
152
|
+
let(:size) { 16 }
|
132
153
|
let(:before) { 0b111 }
|
133
154
|
let(:after) { 0b101 }
|
134
155
|
|
@@ -170,58 +191,189 @@ describe Bis do
|
|
170
191
|
end
|
171
192
|
|
172
193
|
shared_examples 'pushing a bit' do
|
173
|
-
|
174
|
-
|
194
|
+
end
|
195
|
+
|
196
|
+
describe '#concat' do
|
197
|
+
subject { Bis.new(size, value: value).concat(argument) }
|
198
|
+
|
199
|
+
context '0' do
|
200
|
+
context 'zero' do
|
201
|
+
let(:size) { 8 }
|
202
|
+
let(:value) { 10 }
|
203
|
+
let(:argument) { 0 }
|
204
|
+
let(:argument_size) { 1 }
|
205
|
+
let(:new_value) { (value << argument_size) | argument }
|
206
|
+
|
207
|
+
it 'has the orginal size plus enough to fit the new integer value' do
|
208
|
+
expect(subject.size).to eq size + argument_size
|
209
|
+
end
|
210
|
+
|
211
|
+
it "concatenates the integer bits to the end it's end" do
|
212
|
+
expect(subject).to eq new_value
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
context '1' do
|
217
|
+
let(:size) { 8 }
|
218
|
+
let(:value) { 10 }
|
219
|
+
let(:argument) { 1 }
|
220
|
+
let(:argument_size) { 1 }
|
221
|
+
let(:new_value) { (value << argument_size) | argument }
|
222
|
+
|
223
|
+
it 'has the orginal size plus enough to fit the new integer value' do
|
224
|
+
expect(subject.size).to eq size + argument_size
|
225
|
+
end
|
226
|
+
|
227
|
+
it "concatenates the integer bits to the end it's end" do
|
228
|
+
expect(subject).to eq new_value
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
context '2' do
|
233
|
+
let(:size) { 8 }
|
234
|
+
let(:value) { 10 }
|
235
|
+
let(:argument) { 2 }
|
236
|
+
let(:argument_size) { 2 }
|
237
|
+
let(:new_value) { (value << argument_size) | argument }
|
238
|
+
|
239
|
+
it 'has the orginal size plus enough to fit the new integer value' do
|
240
|
+
expect(subject.size).to eq size + argument_size
|
241
|
+
end
|
242
|
+
|
243
|
+
it "concatenates the integer bits to the end it's end" do
|
244
|
+
expect(subject).to eq new_value
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
context '> 1' do
|
249
|
+
let(:size) { 8 }
|
250
|
+
let(:value) { 10 }
|
251
|
+
let(:argument) { 3 }
|
252
|
+
let(:argument_size) { 2 }
|
253
|
+
let(:new_value) { (value << argument_size) | argument }
|
254
|
+
|
255
|
+
it 'has the orginal size plus enough to fit the new integer value' do
|
256
|
+
expect(subject.size).to eq size + argument_size
|
257
|
+
end
|
258
|
+
|
259
|
+
it "concatenates the integer bits to the end it's end" do
|
260
|
+
expect(subject).to eq new_value
|
261
|
+
end
|
262
|
+
end
|
175
263
|
end
|
176
264
|
|
177
|
-
|
178
|
-
|
265
|
+
context 'with a bitset' do
|
266
|
+
let(:size) { 4 }
|
267
|
+
let(:value) { 3 }
|
268
|
+
let(:argument_size) { 10 }
|
269
|
+
let(:argument_value) { 10 }
|
270
|
+
let(:argument) { Bis.new(argument_size, value: argument_value) }
|
271
|
+
let(:new_value) { (value << argument_size) | argument_value }
|
272
|
+
|
273
|
+
it 'returns a new bitset with the size of both bitsets combined' do
|
274
|
+
expect(subject.size).to eq size + argument_size
|
275
|
+
end
|
276
|
+
|
277
|
+
it 'concatenates the two bitsets' do
|
278
|
+
expect(subject.to_i).to eq new_value
|
279
|
+
end
|
179
280
|
end
|
180
281
|
end
|
181
|
-
|
282
|
+
|
182
283
|
describe '#+' do
|
183
|
-
|
184
|
-
|
284
|
+
context 'with an integer' do
|
285
|
+
end
|
286
|
+
end
|
185
287
|
|
186
|
-
|
288
|
+
describe '#&' do
|
289
|
+
let(:size) { 16 }
|
187
290
|
|
188
|
-
|
189
|
-
|
190
|
-
|
291
|
+
subject { Bis.new(size, value: value) & argument }
|
292
|
+
|
293
|
+
context 'with an integer' do
|
294
|
+
let(:size) { 16 }
|
295
|
+
let(:value) { 12 }
|
296
|
+
let(:argument) { 5 }
|
297
|
+
let(:result) { value & argument }
|
191
298
|
|
192
|
-
|
299
|
+
it 'evaluates to logic AND of the two bitsets' do
|
300
|
+
expect(subject).to eq result
|
301
|
+
end
|
193
302
|
end
|
194
303
|
|
195
|
-
context '
|
196
|
-
let(:
|
197
|
-
let(:
|
304
|
+
context 'with another bitset' do
|
305
|
+
let(:size) { 16 }
|
306
|
+
let(:value) { 12 }
|
307
|
+
let(:argument_value) { 5 }
|
308
|
+
let(:argument) { Bis.new(size, value: argument_value) }
|
309
|
+
let(:result) { value & argument_value }
|
198
310
|
|
199
|
-
|
311
|
+
it 'evaluates to logic AND of the two bitsets' do
|
312
|
+
expect(subject).to eq result
|
313
|
+
end
|
200
314
|
end
|
201
315
|
end
|
202
316
|
|
203
|
-
describe '
|
204
|
-
|
205
|
-
|
206
|
-
|
317
|
+
describe '#|' do
|
318
|
+
let(:size) { 16 }
|
319
|
+
|
320
|
+
subject { Bis.new(size, value: value) | argument }
|
321
|
+
|
322
|
+
context 'with an integer' do
|
323
|
+
let(:size) { 16 }
|
324
|
+
let(:value) { 12 }
|
325
|
+
let(:argument) { 5 }
|
326
|
+
let(:result) { value | argument }
|
327
|
+
|
328
|
+
it 'evaluates to logic AND of the two bitsets' do
|
329
|
+
expect(subject).to eq result
|
330
|
+
end
|
207
331
|
end
|
208
|
-
end
|
209
332
|
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
333
|
+
context 'with another bitset' do
|
334
|
+
let(:size) { 16 }
|
335
|
+
let(:value) { 12 }
|
336
|
+
let(:argument_value) { 5 }
|
337
|
+
let(:argument) { Bis.new(size, value: argument_value) }
|
338
|
+
let(:result) { value | argument_value }
|
339
|
+
|
340
|
+
it 'evaluates to logic OR of the two bitsets' do
|
341
|
+
expect(subject).to eq result
|
342
|
+
end
|
214
343
|
end
|
215
344
|
end
|
216
345
|
|
217
346
|
describe '#^' do
|
218
|
-
|
219
|
-
|
220
|
-
|
347
|
+
let(:size) { 16 }
|
348
|
+
|
349
|
+
subject { Bis.new(size, value: value) ^ argument }
|
350
|
+
|
351
|
+
context 'with an integer' do
|
352
|
+
let(:size) { 16 }
|
353
|
+
let(:value) { 12 }
|
354
|
+
let(:argument) { 5 }
|
355
|
+
let(:result) { value ^ argument }
|
356
|
+
|
357
|
+
it 'evaluates to logic AND of the two bitsets' do
|
358
|
+
expect(subject).to eq result
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
context 'with another bitset' do
|
363
|
+
let(:size) { 16 }
|
364
|
+
let(:value) { 12 }
|
365
|
+
let(:argument_value) { 5 }
|
366
|
+
let(:argument) { Bis.new(size, value: argument_value) }
|
367
|
+
let(:result) { value ^ argument_value }
|
368
|
+
|
369
|
+
it 'evaluates to logic XOR of the two bitsets' do
|
370
|
+
expect(subject).to eq result
|
371
|
+
end
|
221
372
|
end
|
222
373
|
end
|
223
374
|
|
224
375
|
describe '#>>' do
|
376
|
+
let(:size) { 16 }
|
225
377
|
let(:shift) { 1 }
|
226
378
|
|
227
379
|
context 'zero value' do
|
@@ -244,6 +396,7 @@ describe Bis do
|
|
244
396
|
end
|
245
397
|
|
246
398
|
describe '#<<' do
|
399
|
+
let(:size) { 16 }
|
247
400
|
let(:shift) { 1 }
|
248
401
|
|
249
402
|
context 'zero value' do
|
@@ -264,4 +417,28 @@ describe Bis do
|
|
264
417
|
end
|
265
418
|
end
|
266
419
|
end
|
420
|
+
|
421
|
+
describe '#each_byte' do
|
422
|
+
subject { ->(b) { Bis.new(size, value: value).each_byte(&b) } }
|
423
|
+
|
424
|
+
context 'bitset has less than 8 bits' do
|
425
|
+
let(:size) { 4 }
|
426
|
+
let(:value) { 0 }
|
427
|
+
|
428
|
+
it "doesn't yield" do
|
429
|
+
expect { |b| subject.(b) }.to_not yield_control
|
430
|
+
end
|
431
|
+
end
|
432
|
+
|
433
|
+
context 'bitset has at least pne byte' do
|
434
|
+
let(:size) { 16 }
|
435
|
+
let(:first_byte) { 38 }
|
436
|
+
let(:second_byte) { 213 }
|
437
|
+
let(:value) { (first_byte << 8) | second_byte }
|
438
|
+
|
439
|
+
it 'yields all the bytes' do
|
440
|
+
expect { |b| subject.(b) }.to yield_successive_args 38, 213
|
441
|
+
end
|
442
|
+
end
|
443
|
+
end
|
267
444
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fuad Saud
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rubocop
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: |2
|
@@ -78,12 +78,12 @@ require_paths:
|
|
78
78
|
- lib
|
79
79
|
required_ruby_version: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- -
|
81
|
+
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- -
|
86
|
+
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '0'
|
89
89
|
requirements: []
|