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 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