supernova 0.3.5 → 0.3.6

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.5
1
+ 0.3.6
@@ -90,11 +90,12 @@ class Supernova::SolrCriteria < Supernova::Criteria
90
90
  return hash if !hash["type"].respond_to?(:constantize)
91
91
  doc = hash["type"].constantize.new
92
92
  doc.instance_variable_set("@solr_doc", hash)
93
- hash.each do |key, value|
94
- if key == "id"
95
- doc.id = value.to_s.split("/").last if doc.respond_to?(:id=)
96
- else
97
- set_first_responding_attribute(doc, key, value)
93
+ atts = convert_doc_attributes(hash)
94
+ if doc.instance_variables.include?("@attributes")
95
+ doc.instance_variable_set("@attributes", atts.except("type"))
96
+ else
97
+ atts.each do |key, value|
98
+ doc.send(:"#{key}=", value) if doc.respond_to?(:"#{key}=")
98
99
  end
99
100
  end
100
101
  doc.instance_variable_set("@readonly", true)
@@ -102,6 +103,17 @@ class Supernova::SolrCriteria < Supernova::Criteria
102
103
  doc
103
104
  end
104
105
 
106
+ def convert_doc_attributes(hash)
107
+ hash.inject({}) do |ret, (key, value)|
108
+ if key == "id"
109
+ ret["id"] = value.to_s.split("/").last
110
+ else
111
+ ret[reverse_lookup_solr_field(key).to_s] = value
112
+ end
113
+ ret
114
+ end
115
+ end
116
+
105
117
  def set_first_responding_attribute(doc, solr_key, value)
106
118
  [reverse_lookup_solr_field(solr_key), solr_key].each do |key|
107
119
  meth = :"#{key}="
@@ -48,7 +48,8 @@ class Supernova::SolrIndexer
48
48
  :float => :f,
49
49
  :date => :dt,
50
50
  :boolean => :b,
51
- :location => :p
51
+ :location => :p,
52
+ :double => :d
52
53
  }
53
54
 
54
55
  def initialize(options = {})
@@ -268,6 +268,12 @@ describe Supernova::SolrCriteria do
268
268
  end
269
269
  end
270
270
 
271
+ it "updates the attributes hash when defined" do
272
+ atts = { "type" => "Offer", "some_other" => "Test", "id" => "offers/1", "enabled" => false, "popularity" => 10 }
273
+ doc = criteria.build_doc(atts)
274
+ doc.instance_variable_get("@attributes").should == { "popularity" => 10, "enabled" => false, "id" => "1", "some_other" => "Test"}
275
+ end
276
+
271
277
  it "returns a Hash when type does not response to " do
272
278
  type = double("type")
273
279
  type.should_receive(:respond_to?).with(:constantize).and_return false
@@ -97,6 +97,7 @@ describe Supernova::SolrIndexer do
97
97
  [:lat, :float] => "lat AS lat_f",
98
98
  [:text, :boolean] => "text AS text_b",
99
99
  [:loc, :location] => "loc AS loc_p",
100
+ [:big_int, :double] => "big_int AS big_int_d",
100
101
  [:deleted_at, :date] => %(IF(deleted_at IS NULL, NULL, CONCAT(REPLACE(deleted_at, " ", "T"), "Z")) AS deleted_at_dt),
101
102
  }.each do |(field, type), name|
102
103
  it "maps #{field} with #{type} to #{name}" do
@@ -5,17 +5,16 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{supernova}
8
- s.version = "0.3.5"
8
+ s.version = "0.3.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tobias Schwab"]
12
- s.date = %q{2011-06-12}
12
+ s.date = %q{2011-06-13}
13
13
  s.description = %q{Unified search scopes}
14
14
  s.email = %q{tobias.schwab@dynport.de}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
- "README.rdoc",
18
- "TODO"
17
+ "README.rdoc"
19
18
  ]
20
19
  s.files = [
21
20
  ".autotest",
@@ -94,7 +93,7 @@ Gem::Specification.new do |s|
94
93
  s.homepage = %q{http://github.com/dynport/supernova}
95
94
  s.licenses = ["MIT"]
96
95
  s.require_paths = ["lib"]
97
- s.rubygems_version = %q{1.6.2}
96
+ s.rubygems_version = %q{1.7.2}
98
97
  s.summary = %q{Unified search scopes}
99
98
 
100
99
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: supernova
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 5
10
- version: 0.3.5
9
+ - 6
10
+ version: 0.3.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tobias Schwab
@@ -15,11 +15,9 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-06-12 00:00:00 +02:00
19
- default_executable:
18
+ date: 2011-06-13 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- type: :runtime
23
21
  requirement: &id001 !ruby/object:Gem::Requirement
24
22
  none: false
25
23
  requirements:
@@ -31,11 +29,11 @@ dependencies:
31
29
  - 0
32
30
  - 3
33
31
  version: 2.0.3
34
- name: thinking-sphinx
35
32
  version_requirements: *id001
33
+ name: thinking-sphinx
36
34
  prerelease: false
37
- - !ruby/object:Gem::Dependency
38
35
  type: :runtime
36
+ - !ruby/object:Gem::Dependency
39
37
  requirement: &id002 !ruby/object:Gem::Requirement
40
38
  none: false
41
39
  requirements:
@@ -45,11 +43,11 @@ dependencies:
45
43
  segments:
46
44
  - 0
47
45
  version: "0"
48
- name: rsolr
49
46
  version_requirements: *id002
47
+ name: rsolr
50
48
  prerelease: false
51
- - !ruby/object:Gem::Dependency
52
49
  type: :runtime
50
+ - !ruby/object:Gem::Dependency
53
51
  requirement: &id003 !ruby/object:Gem::Requirement
54
52
  none: false
55
53
  requirements:
@@ -59,11 +57,11 @@ dependencies:
59
57
  segments:
60
58
  - 0
61
59
  version: "0"
62
- name: will_paginate
63
60
  version_requirements: *id003
61
+ name: will_paginate
64
62
  prerelease: false
65
- - !ruby/object:Gem::Dependency
66
63
  type: :runtime
64
+ - !ruby/object:Gem::Dependency
67
65
  requirement: &id004 !ruby/object:Gem::Requirement
68
66
  none: false
69
67
  requirements:
@@ -73,11 +71,11 @@ dependencies:
73
71
  segments:
74
72
  - 0
75
73
  version: "0"
76
- name: json
77
74
  version_requirements: *id004
75
+ name: json
78
76
  prerelease: false
77
+ type: :runtime
79
78
  - !ruby/object:Gem::Dependency
80
- type: :development
81
79
  requirement: &id005 !ruby/object:Gem::Requirement
82
80
  none: false
83
81
  requirements:
@@ -87,11 +85,11 @@ dependencies:
87
85
  segments:
88
86
  - 0
89
87
  version: "0"
90
- name: ruby-debug
91
88
  version_requirements: *id005
89
+ name: ruby-debug
92
90
  prerelease: false
93
- - !ruby/object:Gem::Dependency
94
91
  type: :development
92
+ - !ruby/object:Gem::Dependency
95
93
  requirement: &id006 !ruby/object:Gem::Requirement
96
94
  none: false
97
95
  requirements:
@@ -103,11 +101,11 @@ dependencies:
103
101
  - 2
104
102
  - 7
105
103
  version: 0.2.7
106
- name: mysql2
107
104
  version_requirements: *id006
105
+ name: mysql2
108
106
  prerelease: false
109
- - !ruby/object:Gem::Dependency
110
107
  type: :development
108
+ - !ruby/object:Gem::Dependency
111
109
  requirement: &id007 !ruby/object:Gem::Requirement
112
110
  none: false
113
111
  requirements:
@@ -117,11 +115,11 @@ dependencies:
117
115
  segments:
118
116
  - 0
119
117
  version: "0"
120
- name: geokit
121
118
  version_requirements: *id007
119
+ name: geokit
122
120
  prerelease: false
123
- - !ruby/object:Gem::Dependency
124
121
  type: :development
122
+ - !ruby/object:Gem::Dependency
125
123
  requirement: &id008 !ruby/object:Gem::Requirement
126
124
  none: false
127
125
  requirements:
@@ -131,11 +129,11 @@ dependencies:
131
129
  segments:
132
130
  - 0
133
131
  version: "0"
134
- name: autotest
135
132
  version_requirements: *id008
133
+ name: autotest
136
134
  prerelease: false
137
- - !ruby/object:Gem::Dependency
138
135
  type: :development
136
+ - !ruby/object:Gem::Dependency
139
137
  requirement: &id009 !ruby/object:Gem::Requirement
140
138
  none: false
141
139
  requirements:
@@ -145,11 +143,11 @@ dependencies:
145
143
  segments:
146
144
  - 0
147
145
  version: "0"
148
- name: autotest-growl
149
146
  version_requirements: *id009
147
+ name: autotest-growl
150
148
  prerelease: false
151
- - !ruby/object:Gem::Dependency
152
149
  type: :development
150
+ - !ruby/object:Gem::Dependency
153
151
  requirement: &id010 !ruby/object:Gem::Requirement
154
152
  none: false
155
153
  requirements:
@@ -161,11 +159,11 @@ dependencies:
161
159
  - 3
162
160
  - 0
163
161
  version: 2.3.0
164
- name: rspec
165
162
  version_requirements: *id010
163
+ name: rspec
166
164
  prerelease: false
167
- - !ruby/object:Gem::Dependency
168
165
  type: :development
166
+ - !ruby/object:Gem::Dependency
169
167
  requirement: &id011 !ruby/object:Gem::Requirement
170
168
  none: false
171
169
  requirements:
@@ -177,11 +175,11 @@ dependencies:
177
175
  - 0
178
176
  - 0
179
177
  version: 1.0.0
180
- name: bundler
181
178
  version_requirements: *id011
179
+ name: bundler
182
180
  prerelease: false
183
- - !ruby/object:Gem::Dependency
184
181
  type: :development
182
+ - !ruby/object:Gem::Dependency
185
183
  requirement: &id012 !ruby/object:Gem::Requirement
186
184
  none: false
187
185
  requirements:
@@ -193,11 +191,11 @@ dependencies:
193
191
  - 6
194
192
  - 0
195
193
  version: 1.6.0
196
- name: jeweler
197
194
  version_requirements: *id012
195
+ name: jeweler
198
196
  prerelease: false
199
- - !ruby/object:Gem::Dependency
200
197
  type: :development
198
+ - !ruby/object:Gem::Dependency
201
199
  requirement: &id013 !ruby/object:Gem::Requirement
202
200
  none: false
203
201
  requirements:
@@ -207,9 +205,10 @@ dependencies:
207
205
  segments:
208
206
  - 0
209
207
  version: "0"
210
- name: rcov
211
208
  version_requirements: *id013
209
+ name: rcov
212
210
  prerelease: false
211
+ type: :development
213
212
  description: Unified search scopes
214
213
  email: tobias.schwab@dynport.de
215
214
  executables: []
@@ -219,7 +218,6 @@ extensions: []
219
218
  extra_rdoc_files:
220
219
  - LICENSE.txt
221
220
  - README.rdoc
222
- - TODO
223
221
  files:
224
222
  - .autotest
225
223
  - .document
@@ -293,8 +291,6 @@ files:
293
291
  - spec/supernova/thinking_sphinx_criteria_spec.rb
294
292
  - spec/supernova_spec.rb
295
293
  - supernova.gemspec
296
- - TODO
297
- has_rdoc: true
298
294
  homepage: http://github.com/dynport/supernova
299
295
  licenses:
300
296
  - MIT
@@ -324,7 +320,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
324
320
  requirements: []
325
321
 
326
322
  rubyforge_project:
327
- rubygems_version: 1.6.2
323
+ rubygems_version: 1.7.2
328
324
  signing_key:
329
325
  specification_version: 3
330
326
  summary: Unified search scopes
data/TODO DELETED
@@ -1,3 +0,0 @@
1
- - mapping von dynamic zu static fields in load_document
2
- - setzen von solr_row in load document
3
- - speichern von :type in :type_s