drip 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/drip.rb +36 -1
- data/lib/drip/version.rb +1 -1
- data/test/basic.rb +37 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fe0e76a3ce8cc23242eba6e08c6800eebbfbe18
|
4
|
+
data.tar.gz: fd19e70695e3da3b1ec9cccd4494d0209865285e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b7fd18f94adc3263e4523fdd000ba77904201745daf725a9f6a9f8469c92b0d6382a23ebc7ebe0739599327578d559787691e948ad151223e8270db1ab0e817
|
7
|
+
data.tar.gz: 15a8fbf484bbcd9e19b29d945fba8c6ac4472711b417ad5394d7e787d5de04c83beb0ce269f16ecedfeffd46f7681101ffc94657035bc18160e14e4dbf18925e
|
data/lib/drip.rb
CHANGED
@@ -178,9 +178,31 @@ class Drip
|
|
178
178
|
self.class.time_to_key(time)
|
179
179
|
end
|
180
180
|
|
181
|
-
def key_to_time(key)
|
181
|
+
def self.key_to_time(key)
|
182
182
|
Time.at(*key.divmod(1000000))
|
183
183
|
end
|
184
|
+
|
185
|
+
def key_to_time(key)
|
186
|
+
self.class.key_to_time(key)
|
187
|
+
end
|
188
|
+
|
189
|
+
def tag_next(tag)
|
190
|
+
past_tag = @past.tag_next(tag)
|
191
|
+
it ,= @tag.lower_bound([tag, INF])
|
192
|
+
return past_tag unless it
|
193
|
+
curr_tag = it[0]
|
194
|
+
return curr_tag unless past_tag
|
195
|
+
curr_tag > past_tag ? past_tag : curr_tag
|
196
|
+
end
|
197
|
+
|
198
|
+
def tag_prev(tag)
|
199
|
+
past_tag = @past.tag_prev(tag)
|
200
|
+
it ,= @tag.upper_bound([tag, 0])
|
201
|
+
return past_tag unless it
|
202
|
+
curr_tag = it[0]
|
203
|
+
return curr_tag unless past_tag
|
204
|
+
curr_tag > past_tag ? curr_tag : past_tag
|
205
|
+
end
|
184
206
|
|
185
207
|
private
|
186
208
|
class SimpleStore
|
@@ -527,6 +549,19 @@ class Drip
|
|
527
549
|
end
|
528
550
|
end
|
529
551
|
|
552
|
+
def tag_next(tag)
|
553
|
+
lower = lower_boundary(@tag, [tag, INF])
|
554
|
+
return nil unless @tag[lower]
|
555
|
+
@tag[lower][0][0]
|
556
|
+
end
|
557
|
+
|
558
|
+
def tag_prev(tag)
|
559
|
+
upper = upper_boundary(@tag, [tag, 0]) - 1
|
560
|
+
return nil if upper < 0
|
561
|
+
return nil unless @tag[upper]
|
562
|
+
@tag[upper][0][0]
|
563
|
+
end
|
564
|
+
|
530
565
|
def head_tag(n, tag)
|
531
566
|
lower = lower_boundary(@tag, [tag, 0])
|
532
567
|
upper = upper_boundary(@tag, [tag, INF])
|
data/lib/drip/version.rb
CHANGED
data/test/basic.rb
CHANGED
@@ -158,6 +158,7 @@ class TestDrip < Test::Unit::TestCase
|
|
158
158
|
['t2', t2],
|
159
159
|
['t3', t3]], 'hello', 't1'), nil)
|
160
160
|
end
|
161
|
+
|
161
162
|
end
|
162
163
|
|
163
164
|
class TestDripUsingStorage < TestDrip
|
@@ -174,6 +175,42 @@ class TestDripUsingStorage < TestDrip
|
|
174
175
|
remove_drip
|
175
176
|
end
|
176
177
|
|
178
|
+
def test_tag_browse
|
179
|
+
@drip.write(1, 't1')
|
180
|
+
@drip.write(2, 't2', 't3')
|
181
|
+
@drip.write(3, 't4', 't3')
|
182
|
+
@drip.write(4, 't5', 't1')
|
183
|
+
assert_equal(@drip.tag_next(''), 't1')
|
184
|
+
assert_equal(@drip.tag_next('t1'), 't2')
|
185
|
+
assert_equal(@drip.tag_next('t3'), 't4')
|
186
|
+
assert_equal(@drip.tag_next('t5'), nil)
|
187
|
+
|
188
|
+
assert_equal(@drip.tag_prev('u'), 't5')
|
189
|
+
assert_equal(@drip.tag_prev('t5'), 't4')
|
190
|
+
assert_equal(@drip.tag_prev('t2'), 't1')
|
191
|
+
assert_equal(@drip.tag_prev('t1'), nil)
|
192
|
+
|
193
|
+
drip = Drip.new('test_db')
|
194
|
+
assert_equal(drip.tag_next(''), 't1')
|
195
|
+
assert_equal(drip.tag_next('t1'), 't2')
|
196
|
+
assert_equal(drip.tag_next('t3'), 't4')
|
197
|
+
assert_equal(drip.tag_next('t5'), nil)
|
198
|
+
|
199
|
+
assert_equal(@drip.tag_prev('u'), 't5')
|
200
|
+
assert_equal(@drip.tag_prev('t5'), 't4')
|
201
|
+
assert_equal(@drip.tag_prev('t2'), 't1')
|
202
|
+
assert_equal(@drip.tag_prev('t1'), nil)
|
203
|
+
|
204
|
+
drip.write(6, 'a1')
|
205
|
+
assert_equal(drip.tag_next(''), 'a1')
|
206
|
+
assert_equal(drip.tag_next('a1'), 't1')
|
207
|
+
assert_equal(drip.tag_next('t1'), 't2')
|
208
|
+
|
209
|
+
assert_equal(drip.tag_prev('t2'), 't1')
|
210
|
+
assert_equal(drip.tag_prev('t1'), 'a1')
|
211
|
+
assert_equal(drip.tag_prev('a1'), nil)
|
212
|
+
end
|
213
|
+
|
177
214
|
def test_twice_latest?
|
178
215
|
assert_equal(@drip.latest?(1), false)
|
179
216
|
tag1 = @drip.write('tag1', 'tag1')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masatoshi Seki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbtree
|