rufus-cloche 0.1.17 → 0.1.18

Sign up to get free protection for your applications and to get access to all the features.
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