rufus-cloche 0.1.17 → 0.1.18

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.
data/CHANGELOG.txt CHANGED
@@ -2,6 +2,12 @@
2
2
  = rufus-cloche CHANGELOG.txt
3
3
 
4
4
 
5
+ == rufus-cloche - 0.1.18 released 2010/08/05
6
+
7
+ - get_many(type, regex, :count => true)
8
+ - get_many(type, regex, :skip => 100, :limit => 25) (added :skip)
9
+
10
+
5
11
  == rufus-cloche - 0.1.17 released 2010/05/04
6
12
 
7
13
  - for ruote-beanstalk : put/get_many now accept strings or symbols as opts keys
data/Rakefile CHANGED
@@ -40,7 +40,7 @@ Strives to be process-safe and thread-safe.
40
40
 
41
41
  #gem.add_dependency 'yajl-ruby'
42
42
  #gem.add_dependency 'json'
43
- gem.add_dependency 'rufus-json', '>= 0.2.0'
43
+ gem.add_dependency 'rufus-json', '>= 0.2.4'
44
44
  gem.add_development_dependency 'rake'
45
45
  gem.add_development_dependency 'yard'
46
46
  gem.add_development_dependency 'jeweler'
data/lib/rufus/cloche.rb CHANGED
@@ -43,7 +43,7 @@ module Rufus
43
43
  #
44
44
  class Cloche
45
45
 
46
- VERSION = '0.1.17'
46
+ VERSION = '0.1.18'
47
47
 
48
48
  WIN = (RUBY_PLATFORM.match(/mswin|mingw/) != nil)
49
49
 
@@ -172,8 +172,10 @@ module Rufus
172
172
  #
173
173
  # == opts
174
174
  #
175
- # The only option know for now is :limit, which limits the number of
176
- # documents returned.
175
+ # :skip and :limit are understood (pagination).
176
+ #
177
+ # If :count => true, the query will simply return the number of documents
178
+ # that matched.
177
179
  #
178
180
  def get_many (type, key_match=nil, opts={})
179
181
 
@@ -184,7 +186,11 @@ module Rufus
184
186
  return [] unless File.exist?(d)
185
187
 
186
188
  docs = []
189
+ skipped = 0
190
+
187
191
  limit = opts['limit']
192
+ skip = opts['skip']
193
+ count = opts['count'] ? 0 : nil
188
194
 
189
195
  files = Dir[File.join(d, '**', '*.json')].sort { |p0, p1|
190
196
  File.basename(p0) <=> File.basename(p1)
@@ -194,12 +200,21 @@ module Rufus
194
200
 
195
201
  key = File.basename(fn, '.json')
196
202
 
197
- if (not key_match) || key.match(key_match)
203
+ if (not key_match) or key.match(key_match)
204
+
205
+ skipped = skipped + 1
206
+ next if skip and skipped <= skip
198
207
 
199
208
  doc = get(type, key)
200
- docs << doc if doc
209
+ next unless doc
210
+
211
+ if count
212
+ count = count + 1
213
+ else
214
+ docs << doc
215
+ end
201
216
 
202
- break if limit && (docs.size >= limit)
217
+ break if limit and docs.size >= limit
203
218
  end
204
219
  end
205
220
 
@@ -209,7 +224,7 @@ module Rufus
209
224
  #docs.sort { |doc0, doc1| doc0['_id'] <=> doc1['_id'] }
210
225
  # let's trust filename order
211
226
 
212
- docs
227
+ count ? count : docs
213
228
  end
214
229
 
215
230
  # Removes entirely documents of a given type.
data/rufus-cloche.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rufus-cloche}
8
- s.version = "0.1.17"
8
+ s.version = "0.1.18"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["John Mettraux"]
12
- s.date = %q{2010-05-04}
12
+ s.date = %q{2010-08-05}
13
13
  s.description = %q{
14
14
  A very stupid JSON hash store.
15
15
 
@@ -53,18 +53,18 @@ Strives to be process-safe and thread-safe.
53
53
  s.specification_version = 3
54
54
 
55
55
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
56
- s.add_runtime_dependency(%q<rufus-json>, [">= 0.2.0"])
56
+ s.add_runtime_dependency(%q<rufus-json>, [">= 0.2.4"])
57
57
  s.add_development_dependency(%q<rake>, [">= 0"])
58
58
  s.add_development_dependency(%q<yard>, [">= 0"])
59
59
  s.add_development_dependency(%q<jeweler>, [">= 0"])
60
60
  else
61
- s.add_dependency(%q<rufus-json>, [">= 0.2.0"])
61
+ s.add_dependency(%q<rufus-json>, [">= 0.2.4"])
62
62
  s.add_dependency(%q<rake>, [">= 0"])
63
63
  s.add_dependency(%q<yard>, [">= 0"])
64
64
  s.add_dependency(%q<jeweler>, [">= 0"])
65
65
  end
66
66
  else
67
- s.add_dependency(%q<rufus-json>, [">= 0.2.0"])
67
+ s.add_dependency(%q<rufus-json>, [">= 0.2.4"])
68
68
  s.add_dependency(%q<rake>, [">= 0"])
69
69
  s.add_dependency(%q<yard>, [">= 0"])
70
70
  s.add_dependency(%q<jeweler>, [">= 0"])
data/test/test.rb CHANGED
@@ -169,15 +169,6 @@ class ClocheTest < Test::Unit::TestCase
169
169
  @c.get_many('person').collect { |e| e['_id'] })
170
170
  end
171
171
 
172
- def test_get_many_limit
173
-
174
- load_people
175
-
176
- assert_equal(
177
- %w[ hiro jami ],
178
- @c.get_many('person', nil, :limit => 2).collect { |e| e['_id'] })
179
- end
180
-
181
172
  def test_dot_id
182
173
 
183
174
  @c.put({ '_id' => 'something.0', 'type' => 'nothing', 'color' => 'blue' })
@@ -209,6 +200,21 @@ class ClocheTest < Test::Unit::TestCase
209
200
  assert_equal %w[ chicko-chan ], @c.real_ids('animal')
210
201
  end
211
202
 
203
+ def test_get_many_options
204
+
205
+ load_people
206
+
207
+ assert_equal(
208
+ %w[ hiro jami ],
209
+ @c.get_many('person', nil, :limit => 2).collect { |e| e['_id'] })
210
+ assert_equal(
211
+ %w[ john minehiko ],
212
+ @c.get_many('person', nil, :skip => 2, :limit => 2).collect { |e| e['_id'] })
213
+
214
+ assert_equal(4, @c.get_many('person', nil, :count => true))
215
+ assert_equal(2, @c.get_many('person', /^j/, :count => true))
216
+ end
217
+
212
218
  protected
213
219
 
214
220
  def load_people
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 17
9
- version: 0.1.17
8
+ - 18
9
+ version: 0.1.18
10
10
  platform: ruby
11
11
  authors:
12
12
  - John Mettraux
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-04 00:00:00 +09:00
17
+ date: 2010-08-05 00:00:00 +09:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -27,8 +27,8 @@ dependencies:
27
27
  segments:
28
28
  - 0
29
29
  - 2
30
- - 0
31
- version: 0.2.0
30
+ - 4
31
+ version: 0.2.4
32
32
  type: :runtime
33
33
  version_requirements: *id001
34
34
  - !ruby/object:Gem::Dependency