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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 920c68a3ad1044c5b61a8fa41544eb78580dd062
4
- data.tar.gz: c709140812d178e3a70c85ca9f021dcdbe95699d
3
+ metadata.gz: 7fe0e76a3ce8cc23242eba6e08c6800eebbfbe18
4
+ data.tar.gz: fd19e70695e3da3b1ec9cccd4494d0209865285e
5
5
  SHA512:
6
- metadata.gz: ac7ec730c4bd447365d7b4e5745a68999daf6ba82cfaa3ea25e81ba8bb347bb5b7054a6fef98d76ea542c983a44a09dbdc4e4e9823e0eea8e9aa540ec94c9ba3
7
- data.tar.gz: a8f7d29a011e809fd419997f39fd17c7d6db9f5176eb31d1a69f832354bf63aa49b92eeb4325ca10d003f6918b0d4e301fba27da8f5a02d140e055b6f5e561a1
6
+ metadata.gz: 6b7fd18f94adc3263e4523fdd000ba77904201745daf725a9f6a9f8469c92b0d6382a23ebc7ebe0739599327578d559787691e948ad151223e8270db1ab0e817
7
+ data.tar.gz: 15a8fbf484bbcd9e19b29d945fba8c6ac4472711b417ad5394d7e787d5de04c83beb0ce269f16ecedfeffd46f7681101ffc94657035bc18160e14e4dbf18925e
@@ -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])
@@ -1,3 +1,3 @@
1
1
  class Drip
2
- VERSION = "0.0.5"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -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.5
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-12 00:00:00.000000000 Z
11
+ date: 2016-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbtree