drip 0.0.5 → 0.1.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 +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
|