plucky 0.3.7 → 0.3.8

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.
Files changed (3) hide show
  1. data/lib/plucky/query.rb +16 -12
  2. data/lib/plucky/version.rb +2 -1
  3. metadata +7 -68
data/lib/plucky/query.rb CHANGED
@@ -6,8 +6,9 @@ module Plucky
6
6
  extend Forwardable
7
7
 
8
8
  OptionKeys = [
9
- :select, :offset, :order, # MM
10
- :fields, :skip, :limit, :sort, :hint, :snapshot, :batch_size, :timeout # Ruby Driver
9
+ :select, :offset, :order, # MM
10
+ :fields, :skip, :limit, :sort, :hint, :snapshot, # Ruby Driver
11
+ :batch_size, :timeout, :transformer # Ruby Driver
11
12
  ]
12
13
 
13
14
  attr_reader :criteria, :options, :collection
@@ -96,6 +97,11 @@ module Plucky
96
97
  count
97
98
  end
98
99
 
100
+ def distinct(key, opts = {})
101
+ query = clone.update(opts)
102
+ query.collection.distinct(key, query.criteria.to_hash)
103
+ end
104
+
99
105
  def update(opts={})
100
106
  opts.each { |key, value| self[key] = value }
101
107
  self
@@ -104,14 +110,14 @@ module Plucky
104
110
  def fields(*args)
105
111
  clone.tap { |query| query.options[:fields] = *args }
106
112
  end
107
-
113
+
108
114
  def ignore(*args)
109
- set_fields(args,0)
115
+ set_fields(args, 0)
110
116
  end
111
-
117
+
112
118
  def only(*args)
113
- set_fields(args,1)
114
- end
119
+ set_fields(args, 1)
120
+ end
115
121
 
116
122
  def limit(count=nil)
117
123
  clone.tap { |query| query.options[:limit] = count }
@@ -119,7 +125,7 @@ module Plucky
119
125
 
120
126
  def reverse
121
127
  clone.tap do |query|
122
- query[:sort].map! do |s|
128
+ query[:sort] = query[:sort].map do |s|
123
129
  [s[0], -s[1]]
124
130
  end unless query.options[:sort].nil?
125
131
  end
@@ -192,14 +198,12 @@ module Plucky
192
198
  end.sort.join(",")
193
199
  "#<#{self.class}#{as_nice_string}>"
194
200
  end
195
-
196
- private
197
-
201
+
202
+ private
198
203
  def set_fields(field_list, value)
199
204
  the_fields = {}
200
205
  field_list.each {|field| the_fields[field.to_sym] = value}
201
206
  clone.tap { |query| query.options[:fields] = the_fields}
202
207
  end
203
-
204
208
  end
205
209
  end
@@ -1,4 +1,5 @@
1
1
  # encoding: UTF-8
2
2
  module Plucky
3
- Version = '0.3.7'
3
+ Version = '0.3.8'
4
+ MongoVersion = '~> 1.3'
4
5
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plucky
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 7
10
- version: 0.3.7
9
+ - 8
10
+ version: 0.3.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - John Nunemaker
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-27 00:00:00 -05:00
18
+ date: 2011-04-15 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -26,74 +26,13 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- hash: 13
29
+ hash: 9
30
30
  segments:
31
31
  - 1
32
- - 1
33
- version: "1.1"
32
+ - 3
33
+ version: "1.3"
34
34
  type: :runtime
35
35
  version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: shoulda
38
- prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 21
45
- segments:
46
- - 2
47
- - 11
48
- version: "2.11"
49
- type: :development
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: jnunemaker-matchy
53
- prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
55
- none: false
56
- requirements:
57
- - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 15
60
- segments:
61
- - 0
62
- - 4
63
- - 0
64
- version: 0.4.0
65
- type: :development
66
- version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
68
- name: mocha
69
- prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
71
- none: false
72
- requirements:
73
- - - ~>
74
- - !ruby/object:Gem::Version
75
- hash: 43
76
- segments:
77
- - 0
78
- - 9
79
- - 8
80
- version: 0.9.8
81
- type: :development
82
- version_requirements: *id004
83
- - !ruby/object:Gem::Dependency
84
- name: log_buddy
85
- prerelease: false
86
- requirement: &id005 !ruby/object:Gem::Requirement
87
- none: false
88
- requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- hash: 3
92
- segments:
93
- - 0
94
- version: "0"
95
- type: :development
96
- version_requirements: *id005
97
36
  description:
98
37
  email:
99
38
  - nunemaker@gmail.com