oedipus-dm 0.0.2 → 0.0.3

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.
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+
3
+ ##
4
+ # DataMapper Integration for Oedipus.
5
+ # Copyright © 2012 Chris Corbyn.
6
+ #
7
+ # See LICENSE file for details.
8
+ ##
9
+
10
+ module Oedipus
11
+ module DataMapper
12
+ # Default methods for accessing model data.
13
+ #
14
+ # Note these classes are not actually procs, for performance reasons.
15
+ module DefaultProc
16
+ class Get
17
+ def initialize(model, attr)
18
+ @model = model
19
+ @attr = attr
20
+ @property = model.properties[attr]
21
+ end
22
+
23
+ def call(resource)
24
+ if @property
25
+ @property.dump(resource[@attr])
26
+ else
27
+ resource.send(@attr)
28
+ end
29
+ end
30
+ end
31
+
32
+ class Set
33
+ def initialize(model, attr)
34
+ @model = model
35
+ @attr = attr
36
+ @property = model.properties[attr]
37
+ end
38
+
39
+ def call(resource, value)
40
+ if @property
41
+ value = @property.load(value)
42
+ end
43
+
44
+ resource.send("#{@attr}=", value)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -194,9 +194,7 @@ module Oedipus
194
194
  raise ArgumentError, "Argument 1 for #multi_search must be a Hash" unless Hash === searches
195
195
 
196
196
  raw.multi_search(
197
- searches.inject({}) { |o, (k, v)|
198
- o.merge!(k => convert_filters(v))
199
- }
197
+ searches.inject({}) { |o, (k, v)| o.merge!(k => convert_filters(v)) }
200
198
  ).inject({}) { |o, (k, v)|
201
199
  o.merge!(k => build_collection(v))
202
200
  }
@@ -221,16 +219,16 @@ module Oedipus
221
219
  # a proc/lambda that accepts a resource and returns the value to set,
222
220
  # for realtime indexes only
223
221
  def map(attr, options = {})
224
- @mappings[attr] = normalize_mapping(attr, options.dup)
222
+ @mappings[attr.to_sym] = normalize_mapping(attr, options.dup)
225
223
  end
226
224
 
227
225
  private
228
226
 
229
227
  def normalize_mapping(attr, options)
230
228
  options.tap do
231
- prop = options.delete(:with) || attr
232
- options[:get] ||= ->(r) { r.send("#{prop}") }
233
- options[:set] ||= ->(r, v) { r.send("#{prop}=", v) }
229
+ prop = (options.delete(:with) || attr).to_sym
230
+ options[:get] ||= DefaultProc::Get.new(model, prop)
231
+ options[:set] ||= DefaultProc::Set.new(model, prop)
234
232
  end
235
233
  end
236
234
 
@@ -9,6 +9,6 @@
9
9
 
10
10
  module Oedipus
11
11
  module DataMapper
12
- VERSION = "0.0.2"
12
+ VERSION = "0.0.3"
13
13
  end
14
14
  end
@@ -13,6 +13,7 @@ require "dm-core"
13
13
  require "oedipus/data_mapper/version"
14
14
  require "oedipus/data_mapper/conversions"
15
15
  require "oedipus/data_mapper/pagination"
16
+ require "oedipus/data_mapper/default_proc"
16
17
  require "oedipus/data_mapper/index"
17
18
  require "oedipus/data_mapper/collection"
18
19
 
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.2
4
+ version: 0.0.3
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-02 00:00:00.000000000 Z
12
+ date: 2012-05-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oedipus
16
- requirement: &13409800 !ruby/object:Gem::Requirement
16
+ requirement: &18175300 !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: *13409800
24
+ version_requirements: *18175300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: dm-core
27
- requirement: &13409180 !ruby/object:Gem::Requirement
27
+ requirement: &18174720 !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: *13409180
35
+ version_requirements: *18174720
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &13408800 !ruby/object:Gem::Requirement
38
+ requirement: &18174320 !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: *13408800
46
+ version_requirements: *18174320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &13408340 !ruby/object:Gem::Requirement
49
+ requirement: &18173760 !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: *13408340
57
+ version_requirements: *18173760
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: dm-pager
60
- requirement: &13407860 !ruby/object:Gem::Requirement
60
+ requirement: &18173280 !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: *13407860
68
+ version_requirements: *18173280
69
69
  description: ! '== DataMapper Integration for Oedipus
70
70
 
71
71
 
@@ -93,6 +93,7 @@ files:
93
93
  - lib/oedipus/data_mapper.rb
94
94
  - lib/oedipus/data_mapper/collection.rb
95
95
  - lib/oedipus/data_mapper/conversions.rb
96
+ - lib/oedipus/data_mapper/default_proc.rb
96
97
  - lib/oedipus/data_mapper/index.rb
97
98
  - lib/oedipus/data_mapper/pagination.rb
98
99
  - lib/oedipus/data_mapper/version.rb
@@ -116,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
117
  version: '0'
117
118
  segments:
118
119
  - 0
119
- hash: 2073315662830389544
120
+ hash: 402637751909853895
120
121
  required_rubygems_version: !ruby/object:Gem::Requirement
121
122
  none: false
122
123
  requirements:
@@ -125,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
126
  version: '0'
126
127
  segments:
127
128
  - 0
128
- hash: 2073315662830389544
129
+ hash: 402637751909853895
129
130
  requirements: []
130
131
  rubyforge_project:
131
132
  rubygems_version: 1.8.11