oedipus-dm 0.0.4 → 0.0.5

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/README.md CHANGED
@@ -155,6 +155,9 @@ Oedipus::DataMapper::Index.new(self) do |idx|
155
155
  end
156
156
  ```
157
157
 
158
+ You may specify `nil` for either the `:get` or `:set` options, in order to
159
+ explicitly disable the transmission of the value in either direction.
160
+
158
161
  ### Fulltext search for resources, via the index
159
162
 
160
163
  The `Index` class provides a `#search` method, which accepts the same
@@ -22,7 +22,7 @@ module Oedipus
22
22
 
23
23
  def call(resource)
24
24
  if @property
25
- @property.dump(resource.send(@attr))
25
+ @property.dump(resource[@attr])
26
26
  else
27
27
  resource.send(@attr)
28
28
  end
@@ -38,10 +38,10 @@ module Oedipus
38
38
 
39
39
  def call(resource, value)
40
40
  if @property
41
- value = @property.load(value)
41
+ resource[@attr] = @property.load(value)
42
+ else
43
+ resource.send("#{@attr}=", value)
42
44
  end
43
-
44
- resource.send("#{@attr}=", value)
45
45
  end
46
46
  end
47
47
  end
@@ -213,11 +213,11 @@ module Oedipus
213
213
  #
214
214
  # @option [Proc] set
215
215
  # a proc/lambda that accepts a new resource, and the value,
216
- # to set the value onto the resource
216
+ # to set the value onto the resource- nil permitted
217
217
  #
218
218
  # @option [Proc] get
219
219
  # a proc/lambda that accepts a resource and returns the value to set,
220
- # for realtime indexes only
220
+ # for realtime indexes only- nil permitted
221
221
  def map(attr, options = {})
222
222
  @mappings[attr.to_sym] = normalize_mapping(attr, options.dup)
223
223
  end
@@ -227,15 +227,15 @@ module Oedipus
227
227
  def normalize_mapping(attr, options)
228
228
  options.tap do
229
229
  prop = (options.delete(:with) || attr).to_sym
230
- options[:get] ||= DefaultProc::Get.new(model, prop)
231
- options[:set] ||= DefaultProc::Set.new(model, prop)
230
+ options[:get] = DefaultProc::Get.new(model, prop) unless options.key?(:get)
231
+ options[:set] = DefaultProc::Set.new(model, prop) unless options.key?(:set)
232
232
  end
233
233
  end
234
234
 
235
235
  def build_collection(result)
236
236
  resources = result[:records].collect do |record|
237
237
  record.inject(model.new) { |r, (k, v)|
238
- r.tap { @mappings[k][:set].call(r, v) if @mappings.key?(k) }
238
+ r.tap { @mappings[k][:set].call(r, v) if @mappings.key?(k) && @mappings[k][:set] }
239
239
  }.tap { |r|
240
240
  r.persistence_state = ::DataMapper::Resource::PersistenceState::Clean.new(r)
241
241
  }
@@ -9,6 +9,6 @@
9
9
 
10
10
  module Oedipus
11
11
  module DataMapper
12
- VERSION = "0.0.4"
12
+ VERSION = "0.0.5"
13
13
  end
14
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oedipus-dm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-04 00:00:00.000000000 Z
12
+ date: 2012-05-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oedipus
16
- requirement: &22561720 !ruby/object:Gem::Requirement
16
+ requirement: &6993440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.0.5
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *22561720
24
+ version_requirements: *6993440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: dm-core
27
- requirement: &22560920 !ruby/object:Gem::Requirement
27
+ requirement: &6989940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.2'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *22560920
35
+ version_requirements: *6989940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &22560340 !ruby/object:Gem::Requirement
38
+ requirement: &7004880 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *22560340
46
+ version_requirements: *7004880
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &22559480 !ruby/object:Gem::Requirement
49
+ requirement: &7002480 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *22559480
57
+ version_requirements: *7002480
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: dm-pager
60
- requirement: &22558720 !ruby/object:Gem::Requirement
60
+ requirement: &7000960 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *22558720
68
+ version_requirements: *7000960
69
69
  description: ! '== DataMapper Integration for Oedipus
70
70
 
71
71
 
@@ -117,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
117
  version: '0'
118
118
  segments:
119
119
  - 0
120
- hash: 969588701257665487
120
+ hash: -2768834143295324576
121
121
  required_rubygems_version: !ruby/object:Gem::Requirement
122
122
  none: false
123
123
  requirements:
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  version: '0'
127
127
  segments:
128
128
  - 0
129
- hash: 969588701257665487
129
+ hash: -2768834143295324576
130
130
  requirements: []
131
131
  rubyforge_project:
132
132
  rubygems_version: 1.8.11