solrizer 3.0.0.pre8 → 3.0.0.rc1
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/lib/solrizer/field_mapper.rb +22 -7
- data/lib/solrizer/version.rb +1 -1
- data/spec/units/field_mapper_spec.rb +4 -0
- metadata +3 -3
@@ -85,6 +85,18 @@ module Solrizer
|
|
85
85
|
#
|
86
86
|
# self.descriptors = [MyCustomIndexDescriptors, DefaultDescriptors]
|
87
87
|
# end
|
88
|
+
|
89
|
+
class StringDescriptor < Solrizer::Descriptor
|
90
|
+
|
91
|
+
def initialize(suffix)
|
92
|
+
@suffix = suffix
|
93
|
+
end
|
94
|
+
|
95
|
+
def suffix(field_type)
|
96
|
+
'_'+@suffix
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
88
100
|
|
89
101
|
class FieldMapper
|
90
102
|
|
@@ -104,7 +116,7 @@ module Solrizer
|
|
104
116
|
self.id_field = self.class.id_field
|
105
117
|
end
|
106
118
|
|
107
|
-
# Given a field name,
|
119
|
+
# Given a field name, index_type, etc., returns the corresponding Solr name.
|
108
120
|
# TODO field type is the input format, maybe we could just detect that?
|
109
121
|
# @param [String] field_name the ruby (term) name which will get a suffix appended to become a Solr field name
|
110
122
|
# @param opts - index_type is only needed if the FieldDescriptor requires it (e.g. :searcahble)
|
@@ -132,19 +144,22 @@ module Solrizer
|
|
132
144
|
end
|
133
145
|
end
|
134
146
|
|
135
|
-
# @param index_type is a
|
147
|
+
# @param [Symbol, String, Descriptor] index_type is a Descriptor, a symbol that references a method that returns a Descriptor, or a string which will be used as the suffix.
|
148
|
+
# @return [Descriptor]
|
136
149
|
def indexer(index_type)
|
137
150
|
index_type = case index_type
|
138
151
|
when Symbol
|
139
152
|
index_type_macro(index_type)
|
140
|
-
when
|
141
|
-
|
142
|
-
|
143
|
-
else
|
153
|
+
when String
|
154
|
+
StringDescriptor.new(index_type)
|
155
|
+
when Descriptor
|
144
156
|
index_type
|
157
|
+
else
|
158
|
+
raise Solrizer::InvalidIndexDescriptor, "#{index_type.class} is not a valid indexer_type. Use a String, Symbol or Descriptor."
|
159
|
+
#IndexDescriptors::Descriptor.new(*index_type)
|
145
160
|
end
|
146
161
|
|
147
|
-
raise InvalidIndexDescriptor, "index type should be an
|
162
|
+
raise InvalidIndexDescriptor, "index type should be an Descriptor, you passed: #{index_type.class}" unless index_type.kind_of? Descriptor
|
148
163
|
index_type
|
149
164
|
end
|
150
165
|
|
data/lib/solrizer/version.rb
CHANGED
@@ -160,6 +160,10 @@ describe Solrizer::FieldMapper do
|
|
160
160
|
@mapper.solr_name('foo').should == 'foo_s'
|
161
161
|
end
|
162
162
|
|
163
|
+
it "should allow you to pass a string as the suffix" do
|
164
|
+
@mapper.solr_name('bar', 'quack').should == 'bar_quack'
|
165
|
+
end
|
166
|
+
|
163
167
|
it "should map based on data type" do
|
164
168
|
@mapper.solr_name('foo', :fungible, type: :integer).should == 'foo_f1'
|
165
169
|
@mapper.solr_name('foo', :fungible, type: :garble).should == 'foo_f2' # based on type.default
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solrizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.
|
4
|
+
version: 3.0.0.rc1
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -226,7 +226,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
226
226
|
version: '0'
|
227
227
|
segments:
|
228
228
|
- 0
|
229
|
-
hash:
|
229
|
+
hash: 985635456296935043
|
230
230
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
231
|
none: false
|
232
232
|
requirements:
|