meta_search_hub 1.1.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.
- checksums.yaml +7 -0
- data/.document +5 -0
- data/.gitmodules +6 -0
- data/CHANGELOG +109 -0
- data/Gemfile +12 -0
- data/LICENSE +20 -0
- data/README.rdoc +438 -0
- data/Rakefile +69 -0
- data/VERSION +1 -0
- data/lib/meta_search/builder.rb +316 -0
- data/lib/meta_search/exceptions.rb +17 -0
- data/lib/meta_search/helpers/form_builder.rb +166 -0
- data/lib/meta_search/helpers/form_helper.rb +24 -0
- data/lib/meta_search/helpers/url_helper.rb +66 -0
- data/lib/meta_search/helpers.rb +3 -0
- data/lib/meta_search/locale/en.yml +24 -0
- data/lib/meta_search/method.rb +129 -0
- data/lib/meta_search/model_compatibility.rb +75 -0
- data/lib/meta_search/searches/active_record.rb +203 -0
- data/lib/meta_search/utility.rb +110 -0
- data/lib/meta_search/where.rb +264 -0
- data/lib/meta_search.rb +58 -0
- data/meta_search.gemspec +90 -0
- data/test/fixtures/companies.yml +17 -0
- data/test/fixtures/company.rb +22 -0
- data/test/fixtures/data_type.rb +5 -0
- data/test/fixtures/data_types.yml +15 -0
- data/test/fixtures/developer.rb +11 -0
- data/test/fixtures/developers.yml +62 -0
- data/test/fixtures/developers_projects.yml +25 -0
- data/test/fixtures/note.rb +3 -0
- data/test/fixtures/notes.yml +79 -0
- data/test/fixtures/project.rb +4 -0
- data/test/fixtures/projects.yml +34 -0
- data/test/fixtures/schema.rb +47 -0
- data/test/helper.rb +44 -0
- data/test/locales/es.yml +5 -0
- data/test/locales/flanders.yml +18 -0
- data/test/test_search.rb +969 -0
- data/test/test_view_helpers.rb +447 -0
- metadata +160 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
require 'action_controller'
|
|
3
|
+
require 'action_view/test_case'
|
|
4
|
+
|
|
5
|
+
class TestViewHelpers < ActionView::TestCase
|
|
6
|
+
tests MetaSearch::Helpers::FormHelper
|
|
7
|
+
include MetaSearch::Helpers::UrlHelper
|
|
8
|
+
|
|
9
|
+
def self.router
|
|
10
|
+
@router ||= begin
|
|
11
|
+
router = ActionDispatch::Routing::RouteSet.new
|
|
12
|
+
router.draw do
|
|
13
|
+
resources :developers
|
|
14
|
+
resources :companies
|
|
15
|
+
resources :projects
|
|
16
|
+
resources :notes
|
|
17
|
+
match ':controller(/:action(/:id(.:format)))'
|
|
18
|
+
end
|
|
19
|
+
router
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
include router.url_helpers
|
|
24
|
+
|
|
25
|
+
# FIXME: figure out a cleaner way to get this behavior
|
|
26
|
+
def setup
|
|
27
|
+
router = self.class.router
|
|
28
|
+
@controller = ActionView::TestCase::TestController.new
|
|
29
|
+
@controller.instance_variable_set(:@_routes, router)
|
|
30
|
+
@controller.class_eval do
|
|
31
|
+
include router.url_helpers
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
@controller.view_context_class.class_eval do
|
|
35
|
+
include router.url_helpers
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context "A search against Company and a search against Developer" do
|
|
40
|
+
setup do
|
|
41
|
+
@s1 = Company.search
|
|
42
|
+
@s2 = Developer.search
|
|
43
|
+
form_for @s1 do |f|
|
|
44
|
+
@f1 = f
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
form_for @s2 do |f|
|
|
48
|
+
@f2 = f
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
should "use the default localization for predicates" do
|
|
53
|
+
assert_match /Name isn't null/, @f1.label(:name_is_not_null)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
context "in the Flanders locale" do
|
|
57
|
+
setup do
|
|
58
|
+
I18n.locale = :flanders
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
teardown do
|
|
62
|
+
I18n.locale = nil
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
should "localize according to their bases" do
|
|
66
|
+
assert_match /Company name-diddly contains-diddly/, @f1.label(:name_contains)
|
|
67
|
+
assert_match /Company reverse name-diddly/, @f1.label(:reverse_name)
|
|
68
|
+
assert_match /Developer name-diddly contains-aroonie/, @f2.label(:name_like)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
should "localize more than one attribute when joined with or" do
|
|
72
|
+
assert_match /Developer name-diddly or-diddly Developer salary-doodly equals-diddly/, @f2.label(:name_or_salary_eq)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
context "A previously-filled search form" do
|
|
78
|
+
setup do
|
|
79
|
+
@s = Company.search
|
|
80
|
+
@s.created_at_gte = [2001, 2, 3, 4, 5]
|
|
81
|
+
@s.name_contains = "bacon"
|
|
82
|
+
form_for @s do |f|
|
|
83
|
+
@f = f
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
should "retain previous search terms" do
|
|
88
|
+
html = @f.datetime_select(:created_at_gte)
|
|
89
|
+
['2001', '3', '04', '05'].each do |v|
|
|
90
|
+
assert_match /<option selected="selected" value="#{v}">#{v}<\/option>/,
|
|
91
|
+
html
|
|
92
|
+
end
|
|
93
|
+
assert_match /<option selected="selected" value="2">February<\/option>/, html
|
|
94
|
+
assert_dom_equal '<input id="search_name_contains" name="search[name_contains]" ' +
|
|
95
|
+
'size="30" type="text" value="bacon" />',
|
|
96
|
+
@f.text_field(:name_contains)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
context "A form using mutiparameter_field with default size option" do
|
|
101
|
+
setup do
|
|
102
|
+
@s = Developer.search
|
|
103
|
+
form_for @s do |f|
|
|
104
|
+
@f = f
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
should "apply proper cast and default size attribute to text fields" do
|
|
109
|
+
html = @f.multiparameter_field :salary_in,
|
|
110
|
+
{:field_type => :text_field, :type_cast => 'i'},
|
|
111
|
+
{:field_type => :text_field, :type_cast => 'i'}, :size => 10
|
|
112
|
+
assert_dom_equal '<input id="search_salary_in(1i)" name="search[salary_in(1i)]" ' +
|
|
113
|
+
'size="10" type="text" />' +
|
|
114
|
+
'<input id="search_salary_in(2i)" name="search[salary_in(2i)]" ' +
|
|
115
|
+
'size="10" type="text" />',
|
|
116
|
+
html
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
context "A form using checks with three choices" do
|
|
121
|
+
setup do
|
|
122
|
+
@s = Company.search
|
|
123
|
+
form_for @s do |f|
|
|
124
|
+
@f = f
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
should "return an array of check boxes without a block" do
|
|
129
|
+
assert @f.checks(:id_in, [['One', 1], ['Two', 2], ['Three', 3]]).all?{|c| c.is_a?(MetaSearch::Check)}
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
should "generate the expected HTML with a block" do
|
|
133
|
+
expected = <<-EXPECTED
|
|
134
|
+
<p>
|
|
135
|
+
<label for="search_id_in_1">One</label>
|
|
136
|
+
<input id="search_id_in_1" name="search[id_in][]" type="checkbox" value="1" />
|
|
137
|
+
</p>
|
|
138
|
+
<p>
|
|
139
|
+
<label for="search_id_in_2">Two</label>
|
|
140
|
+
<input id="search_id_in_2" name="search[id_in][]" type="checkbox" value="2" />
|
|
141
|
+
</p>
|
|
142
|
+
<p>
|
|
143
|
+
<label for="search_id_in_3">Three</label>
|
|
144
|
+
<input id="search_id_in_3" name="search[id_in][]" type="checkbox" value="3" />
|
|
145
|
+
</p>
|
|
146
|
+
EXPECTED
|
|
147
|
+
assert_dom_equal expected,
|
|
148
|
+
render(:to => :string, :inline => <<-ERB)
|
|
149
|
+
<%= @f.checks(:id_in, [['One', 1], ['Two', 2], ['Three', 3]]) do |c| -%>
|
|
150
|
+
<p>
|
|
151
|
+
<%= c.label %>
|
|
152
|
+
<%= c.box %>
|
|
153
|
+
</p>
|
|
154
|
+
<% end -%>
|
|
155
|
+
ERB
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
context "A form using checks with three choices and a previous selection" do
|
|
160
|
+
setup do
|
|
161
|
+
@s = Company.search
|
|
162
|
+
@s.id_in = [1, 3]
|
|
163
|
+
form_for @s do |f|
|
|
164
|
+
@f = f
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
should "return an array of check boxes without a block" do
|
|
169
|
+
assert @f.checks(:id_in, [['One', 1], ['Two', 2], ['Three', 3]]).all?{|c| c.is_a?(MetaSearch::Check)}
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
should "generate the expected HTML with a block" do
|
|
173
|
+
expected = <<-EXPECTED
|
|
174
|
+
<p>
|
|
175
|
+
<label for="search_id_in_1">One</label>
|
|
176
|
+
<input id="search_id_in_1" name="search[id_in][]" type="checkbox" value="1" checked="checked" />
|
|
177
|
+
</p>
|
|
178
|
+
<p>
|
|
179
|
+
<label for="search_id_in_2">Two</label>
|
|
180
|
+
<input id="search_id_in_2" name="search[id_in][]" type="checkbox" value="2" />
|
|
181
|
+
</p>
|
|
182
|
+
<p>
|
|
183
|
+
<label for="search_id_in_3">Three</label>
|
|
184
|
+
<input id="search_id_in_3" name="search[id_in][]" type="checkbox" value="3" checked="checked" />
|
|
185
|
+
</p>
|
|
186
|
+
EXPECTED
|
|
187
|
+
assert_dom_equal expected,
|
|
188
|
+
render(:to => :string, :inline => <<-ERB)
|
|
189
|
+
<%= @f.checks(:id_in, [['One', 1], ['Two', 2], ['Three', 3]]) do |c| -%>
|
|
190
|
+
<p>
|
|
191
|
+
<%= c.label %>
|
|
192
|
+
<%= c.box %>
|
|
193
|
+
</p>
|
|
194
|
+
<% end -%>
|
|
195
|
+
ERB
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
context "A form using collection_checks with companies" do
|
|
200
|
+
setup do
|
|
201
|
+
@s = Company.search
|
|
202
|
+
form_for @s do |f|
|
|
203
|
+
@f = f
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
should "return an array of check boxes without a block" do
|
|
208
|
+
assert @f.collection_checks(:id_in, Company.all, :id, :name).all?{|c| c.is_a?(MetaSearch::Check)}
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
should "generate the expected HTML with a block" do
|
|
212
|
+
@f.collection_checks(:id_in, Company.all, :id, :name) do |c|
|
|
213
|
+
concat render :to => :string, :inline => "<p><%= c.label %> <%= c.box %></p>", :locals => {:c => c}
|
|
214
|
+
end
|
|
215
|
+
assert_dom_equal output_buffer,
|
|
216
|
+
'<p><label for="search_id_in_1">Initech</label> ' +
|
|
217
|
+
'<input id="search_id_in_1" name="search[id_in][]" type="checkbox" value="1" /></p>' +
|
|
218
|
+
'<p><label for="search_id_in_2">Advanced Optical Solutions</label> ' +
|
|
219
|
+
'<input id="search_id_in_2" name="search[id_in][]" type="checkbox" value="2" /></p>' +
|
|
220
|
+
'<p><label for="search_id_in_3">Mission Data</label> ' +
|
|
221
|
+
'<input id="search_id_in_3" name="search[id_in][]" type="checkbox" value="3" /></p>'
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
context "A company search form sorted by name ascending" do
|
|
226
|
+
setup do
|
|
227
|
+
@s = Company.search
|
|
228
|
+
@s.meta_sort = 'name.asc'
|
|
229
|
+
form_for @s do |f|
|
|
230
|
+
@f = f
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
should "generate a sort link with an up arrow for the sorted column" do
|
|
235
|
+
assert_match /Name ▲/,
|
|
236
|
+
@f.sort_link(:name, :controller => 'companies')
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
should "not generate a sort link with an up arrow for a non-sorted column" do
|
|
240
|
+
assert_no_match /Created at ▲/,
|
|
241
|
+
@f.sort_link(:created_at, :controller => 'companies')
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
context "and a localization" do
|
|
245
|
+
setup do
|
|
246
|
+
I18n.locale = :es
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
teardown do
|
|
250
|
+
I18n.locale = nil
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
should "use the localized name for the attribute" do
|
|
254
|
+
assert_match /Nombre/,
|
|
255
|
+
@f.sort_link(:name, :controller => 'companies')
|
|
256
|
+
end
|
|
257
|
+
end
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
context "A developer search form sorted by a custom sort method" do
|
|
261
|
+
setup do
|
|
262
|
+
@s = Developer.search
|
|
263
|
+
@s.meta_sort = 'salary_and_name.asc'
|
|
264
|
+
form_for @s do |f|
|
|
265
|
+
@f = f
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
should "generate a sort link with humanized text" do
|
|
270
|
+
assert_match /Salary and name ▲/,
|
|
271
|
+
@f.sort_link(:salary_and_name, :controller => 'developers')
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
should "sort results as expected" do
|
|
275
|
+
assert_equal Developer.order('salary ASC, name ASC'),
|
|
276
|
+
@s.all
|
|
277
|
+
end
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
context "A developer search form sorted by multiple columns" do
|
|
281
|
+
setup do
|
|
282
|
+
@s = Developer.search
|
|
283
|
+
@s.meta_sort = 'name_and_salary.asc'
|
|
284
|
+
form_for @s do |f|
|
|
285
|
+
@f = f
|
|
286
|
+
end
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
should "generate a sort link with humanized text" do
|
|
290
|
+
assert_match /Name and salary ▲/,
|
|
291
|
+
@f.sort_link(:name_and_salary, :controller => 'developers')
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
should "order by both columns in the order they were specified" do
|
|
295
|
+
assert_match /ORDER BY "developers"."name" ASC, "developers"."salary" ASC/,
|
|
296
|
+
@s.to_sql
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
should "return expected results" do
|
|
300
|
+
assert_equal Developer.order('name ASC, salary ASC').all,
|
|
301
|
+
@s.all
|
|
302
|
+
end
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
context "A company search form with an alternate search_key" do
|
|
306
|
+
setup do
|
|
307
|
+
@s = Company.search({}, :search_key => 'searchy_mcsearchhead')
|
|
308
|
+
form_for @s do |f|
|
|
309
|
+
@f = f
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
should "generate a sort link that places meta_sort param under the specified key" do
|
|
314
|
+
assert_match /searchy_mcsearchhead/,
|
|
315
|
+
@f.sort_link(:name, :controller => 'companies')
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
context "A company search" do
|
|
320
|
+
setup do
|
|
321
|
+
@s = Company.search
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
should "generate a sort link for descending order if set as the default order" do
|
|
325
|
+
assert_match /name.desc/,
|
|
326
|
+
sort_link(@s, :name, :controller => 'companies', :default_order => :desc)
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
should "generate a sort link for ascending order if set as the default order" do
|
|
330
|
+
assert_match /name.asc/,
|
|
331
|
+
sort_link(@s, :name, :controller => 'companies', :default_order => :asc)
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
should "generate a sort link for ascending order if default is specified incorectly" do
|
|
335
|
+
assert_match /name.asc/,
|
|
336
|
+
sort_link(@s, :name, :controller => 'companies', :default_order => :something_else)
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
context "sorted by name ascending" do
|
|
340
|
+
setup do
|
|
341
|
+
@s.meta_sort = 'name.asc'
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
should "generate a sort link with an up arrow for the sorted column" do
|
|
345
|
+
assert_match /Name ▲/,
|
|
346
|
+
sort_link(@s, :name, :controller => 'companies')
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
should "not generate a sort link with an up arrow for a non-sorted column" do
|
|
350
|
+
assert_no_match /Created at ▲/,
|
|
351
|
+
sort_link(@s, :created_at, :controller => 'companies')
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
should "generate a sort link for descending order if ascending order is the default" do
|
|
355
|
+
assert_match /name.desc/,
|
|
356
|
+
sort_link(@s, :name, :controller => 'companies', :default_order => :asc)
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
should "generate a sort link for descending order if descending order is the default" do
|
|
360
|
+
assert_match /name.desc/,
|
|
361
|
+
sort_link(@s, :name, :controller => 'companies', :default_order => :desc)
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
should "generate a sort link for descending order if default is specified incorrectly" do
|
|
365
|
+
assert_match /name.desc/,
|
|
366
|
+
sort_link(@s, :name, :controller => 'companies', :default_order => :something_else)
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
context "with existing search options" do
|
|
370
|
+
setup do
|
|
371
|
+
@s.name_contains = 'a'
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
should "maintain previous search options in its sort links" do
|
|
375
|
+
assert_match /search%5Bname_contains%5D=a/,
|
|
376
|
+
sort_link(@s, :name, :controller => 'companies')
|
|
377
|
+
end
|
|
378
|
+
end
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
context "sorted by name descending" do
|
|
382
|
+
setup do
|
|
383
|
+
@s.meta_sort = 'name.desc'
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
should "generate a sort link for ascending order if descending order is the default" do
|
|
387
|
+
assert_match /name.asc/,
|
|
388
|
+
sort_link(@s, :name, :controller => 'companies', :default_order => :desc)
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
should "generate a sort link for ascending order if ascending order is the default" do
|
|
392
|
+
assert_match /name.asc/,
|
|
393
|
+
sort_link(@s, :name, :controller => 'companies', :default_order => :asc)
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
should "generate a sort link for ascending order if default is specified incorrectly" do
|
|
397
|
+
assert_match /name.asc/,
|
|
398
|
+
sort_link(@s, :name, :controller => 'companies', :default_order => :desc)
|
|
399
|
+
end
|
|
400
|
+
end
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
context "A developer search" do
|
|
404
|
+
setup do
|
|
405
|
+
@s = Developer.search
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
context "sorted by company name descending" do
|
|
409
|
+
setup do
|
|
410
|
+
@s.meta_sort = 'company_name.desc'
|
|
411
|
+
end
|
|
412
|
+
|
|
413
|
+
should "generate a sort link with a down arrow for the sorted column" do
|
|
414
|
+
assert_match /Company name ▼/,
|
|
415
|
+
sort_link(@s, :company_name, :controller => 'developers')
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
should "not generate a sort link with a down arrow for a non-sorted column" do
|
|
419
|
+
assert_no_match /Created at ▼/,
|
|
420
|
+
sort_link(@s, :created_at, :controller => 'developers')
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
context "with existing search options" do
|
|
424
|
+
setup do
|
|
425
|
+
@s.name_contains = 'a'
|
|
426
|
+
end
|
|
427
|
+
|
|
428
|
+
should "maintain previous search options in its sort links" do
|
|
429
|
+
assert_match /search%5Bname_contains%5D=a/,
|
|
430
|
+
sort_link(@s, :company_name, :controller => 'companies')
|
|
431
|
+
end
|
|
432
|
+
end
|
|
433
|
+
end
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
context "Any search" do
|
|
437
|
+
setup do
|
|
438
|
+
@s = Company.search(:name_contains => 'foo')
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
should "not modify passed-in parameters" do
|
|
442
|
+
params = { :controller => 'companies' }
|
|
443
|
+
sort_link(@s, :name, params)
|
|
444
|
+
assert_equal ({ :controller => 'companies' }), params
|
|
445
|
+
end
|
|
446
|
+
end
|
|
447
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: meta_search_hub
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.1.3
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Ernie Miller
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 2012-02-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: activerecord
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '3.1'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '3.1'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: activesupport
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '3.1'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '3.1'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: polyamorous
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: 0.5.0
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 0.5.0
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: actionpack
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - "~>"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '3.1'
|
|
61
|
+
type: :runtime
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - "~>"
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '3.1'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: shoulda
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - "~>"
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '2.11'
|
|
75
|
+
type: :development
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - "~>"
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '2.11'
|
|
82
|
+
description: "\n Allows simple search forms to be created against an AR3 model\n
|
|
83
|
+
\ and its associations, has useful view helpers for sort links\n and multiparameter
|
|
84
|
+
fields as well.\n "
|
|
85
|
+
email: ernie@metautonomo.us
|
|
86
|
+
executables: []
|
|
87
|
+
extensions: []
|
|
88
|
+
extra_rdoc_files:
|
|
89
|
+
- LICENSE
|
|
90
|
+
- README.rdoc
|
|
91
|
+
files:
|
|
92
|
+
- ".document"
|
|
93
|
+
- ".gitmodules"
|
|
94
|
+
- CHANGELOG
|
|
95
|
+
- Gemfile
|
|
96
|
+
- LICENSE
|
|
97
|
+
- README.rdoc
|
|
98
|
+
- Rakefile
|
|
99
|
+
- VERSION
|
|
100
|
+
- lib/meta_search.rb
|
|
101
|
+
- lib/meta_search/builder.rb
|
|
102
|
+
- lib/meta_search/exceptions.rb
|
|
103
|
+
- lib/meta_search/helpers.rb
|
|
104
|
+
- lib/meta_search/helpers/form_builder.rb
|
|
105
|
+
- lib/meta_search/helpers/form_helper.rb
|
|
106
|
+
- lib/meta_search/helpers/url_helper.rb
|
|
107
|
+
- lib/meta_search/locale/en.yml
|
|
108
|
+
- lib/meta_search/method.rb
|
|
109
|
+
- lib/meta_search/model_compatibility.rb
|
|
110
|
+
- lib/meta_search/searches/active_record.rb
|
|
111
|
+
- lib/meta_search/utility.rb
|
|
112
|
+
- lib/meta_search/where.rb
|
|
113
|
+
- meta_search.gemspec
|
|
114
|
+
- test/fixtures/companies.yml
|
|
115
|
+
- test/fixtures/company.rb
|
|
116
|
+
- test/fixtures/data_type.rb
|
|
117
|
+
- test/fixtures/data_types.yml
|
|
118
|
+
- test/fixtures/developer.rb
|
|
119
|
+
- test/fixtures/developers.yml
|
|
120
|
+
- test/fixtures/developers_projects.yml
|
|
121
|
+
- test/fixtures/note.rb
|
|
122
|
+
- test/fixtures/notes.yml
|
|
123
|
+
- test/fixtures/project.rb
|
|
124
|
+
- test/fixtures/projects.yml
|
|
125
|
+
- test/fixtures/schema.rb
|
|
126
|
+
- test/helper.rb
|
|
127
|
+
- test/locales/es.yml
|
|
128
|
+
- test/locales/flanders.yml
|
|
129
|
+
- test/test_search.rb
|
|
130
|
+
- test/test_view_helpers.rb
|
|
131
|
+
homepage: http://metautonomo.us/projects/metasearch/
|
|
132
|
+
licenses: []
|
|
133
|
+
metadata: {}
|
|
134
|
+
post_install_message: |2+
|
|
135
|
+
|
|
136
|
+
*** Thanks for installing MetaSearch! ***
|
|
137
|
+
Be sure to check out http://metautonomo.us/projects/metasearch/ for a
|
|
138
|
+
walkthrough of MetaSearch's features, and click the donate button if
|
|
139
|
+
you're feeling especially appreciative. It'd help me justify this
|
|
140
|
+
"open source" stuff to my lovely wife. :)
|
|
141
|
+
|
|
142
|
+
rdoc_options: []
|
|
143
|
+
require_paths:
|
|
144
|
+
- lib
|
|
145
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
146
|
+
requirements:
|
|
147
|
+
- - ">="
|
|
148
|
+
- !ruby/object:Gem::Version
|
|
149
|
+
version: '0'
|
|
150
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
|
+
requirements:
|
|
152
|
+
- - ">="
|
|
153
|
+
- !ruby/object:Gem::Version
|
|
154
|
+
version: '0'
|
|
155
|
+
requirements: []
|
|
156
|
+
rubygems_version: 4.0.15
|
|
157
|
+
specification_version: 3
|
|
158
|
+
summary: Object-based searching (and more) for simply creating search forms.
|
|
159
|
+
test_files: []
|
|
160
|
+
...
|