meta_search 1.1.0.pre → 1.1.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +4 -0
- data/VERSION +1 -1
- data/lib/meta_search.rb +1 -1
- data/lib/meta_search/helpers/url_helper.rb +16 -3
- data/meta_search.gemspec +5 -5
- data/test/fixtures/data_types.yml +3 -3
- data/test/helper.rb +1 -0
- data/test/test_view_helpers.rb +52 -1
- metadata +61 -58
data/README.rdoc
CHANGED
@@ -322,6 +322,10 @@ your controller. The other required parameter is the attribute name itself. Opti
|
|
322
322
|
you can provide a string as a 3rd parameter to override the default link name, and then
|
323
323
|
additional hashed for the +options+ and +html_options+ hashes for link_to.
|
324
324
|
|
325
|
+
By default, the link that is created will sort by the given column in ascending order when first clicked. If you'd like to reverse this (so the first click sorts the results in descending order), you can pass +:default_order => :desc+ in the options hash, like so:
|
326
|
+
|
327
|
+
<%= sort_link @search, :ratings, "Highest Rated", :default_order => :desc %>
|
328
|
+
|
325
329
|
You can sort by more than one column as well, by creating a link like:
|
326
330
|
|
327
331
|
<%= sort_link :name_and_salary %>
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.0.
|
1
|
+
1.1.0.pre2
|
data/lib/meta_search.rb
CHANGED
@@ -15,7 +15,7 @@ module MetaSearch
|
|
15
15
|
['contains', 'like', 'matches', {:types => STRINGS, :predicate => :matches, :formatter => '"%#{param}%"'}],
|
16
16
|
['does_not_contain', 'nlike', 'not_matches', {:types => STRINGS, :predicate => :does_not_match, :formatter => '"%#{param}%"'}],
|
17
17
|
['starts_with', 'sw', {:types => STRINGS, :predicate => :matches, :formatter => '"#{param}%"'}],
|
18
|
-
['does_not_start_with', 'dnsw', {:types => STRINGS, :predicate => :does_not_match, :formatter => '"
|
18
|
+
['does_not_start_with', 'dnsw', {:types => STRINGS, :predicate => :does_not_match, :formatter => '"#{param}%"'}],
|
19
19
|
['ends_with', 'ew', {:types => STRINGS, :predicate => :matches, :formatter => '"%#{param}"'}],
|
20
20
|
['does_not_end_with', 'dnew', {:types => STRINGS, :predicate => :does_not_match, :formatter => '"%#{param}"'}],
|
21
21
|
['greater_than', 'gt', {:types => (NUMBERS + DATES + TIMES), :predicate => :gt}],
|
@@ -16,14 +16,27 @@ module MetaSearch
|
|
16
16
|
# <%= sort_link @search, :name, 'Company Name' %>
|
17
17
|
# <%= sort_link @search, :name, :class => 'name_sort' %>
|
18
18
|
# <%= sort_link @search, :name, 'Company Name', :class => 'company_name_sort' %>
|
19
|
+
# <%= sort_link @search, :name, :default_order => :desc %>
|
20
|
+
# <%= sort_link @search, :name, 'Company Name', :default_order => :desc %>
|
21
|
+
# <%= sort_link @search, :name, :class => 'name_sort', :default_order => :desc %>
|
22
|
+
# <%= sort_link @search, :name, 'Company Name', :class => 'company_name_sort', :default_order => :desc %>
|
23
|
+
|
19
24
|
def sort_link(builder, attribute, *args)
|
20
25
|
raise ArgumentError, "Need a MetaSearch::Builder search object as first param!" unless builder.is_a?(MetaSearch::Builder)
|
21
26
|
attr_name = attribute.to_s
|
22
27
|
name = (args.size > 0 && !args.first.is_a?(Hash)) ? args.shift.to_s : builder.base.human_attribute_name(attr_name)
|
23
28
|
prev_attr, prev_order = builder.search_attributes['meta_sort'].to_s.split('.')
|
24
|
-
|
25
|
-
new_order = current_order == 'asc' ? 'desc' : 'asc'
|
29
|
+
|
26
30
|
options = args.first.is_a?(Hash) ? args.shift : {}
|
31
|
+
current_order = prev_attr == attr_name ? prev_order : nil
|
32
|
+
|
33
|
+
if options[:default_order] == :desc
|
34
|
+
new_order = current_order == 'desc' ? 'asc' : 'desc'
|
35
|
+
else
|
36
|
+
new_order = current_order == 'asc' ? 'desc' : 'asc'
|
37
|
+
end
|
38
|
+
options.delete(:default_order)
|
39
|
+
|
27
40
|
html_options = args.first.is_a?(Hash) ? args.shift : {}
|
28
41
|
css = ['sort_link', current_order].compact.join(' ')
|
29
42
|
html_options[:class] = [css, html_options[:class]].compact.join(' ')
|
@@ -50,4 +63,4 @@ module MetaSearch
|
|
50
63
|
end
|
51
64
|
end
|
52
65
|
end
|
53
|
-
end
|
66
|
+
end
|
data/meta_search.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{meta_search}
|
8
|
-
s.version = "1.1.0.
|
8
|
+
s.version = "1.1.0.pre2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{2011-
|
11
|
+
s.authors = [%q{Ernie Miller}]
|
12
|
+
s.date = %q{2011-07-07}
|
13
13
|
s.description = %q{
|
14
14
|
Allows simple search forms to be created against an AR3 model
|
15
15
|
and its associations, has useful view helpers for sort links
|
@@ -70,8 +70,8 @@ you're feeling especially appreciative. It'd help me justify this
|
|
70
70
|
"open source" stuff to my lovely wife. :)
|
71
71
|
|
72
72
|
}
|
73
|
-
s.require_paths = [
|
74
|
-
s.rubygems_version = %q{1.
|
73
|
+
s.require_paths = [%q{lib}]
|
74
|
+
s.rubygems_version = %q{1.8.5}
|
75
75
|
s.summary = %q{Object-based searching (and more) for simply creating search forms.}
|
76
76
|
|
77
77
|
if s.respond_to? :specification_version then
|
@@ -6,9 +6,9 @@ dt_<%= n %>:
|
|
6
6
|
int : <%= n ** 3 %>
|
7
7
|
flt : <%= n.to_f / 2.0 %>
|
8
8
|
dec : <%= n.to_f ** (n + 0.1) %>
|
9
|
-
dtm : <%= (Time.
|
10
|
-
tms : <%= (Time.
|
11
|
-
tim : <%= Time.
|
9
|
+
dtm : <%= (Time.local(2009, 12, 24) + 86400 * n).in_time_zone.to_s(:db) %>
|
10
|
+
tms : <%= (Time.local(2009, 12, 24) + 86400 * n).in_time_zone.to_s(:db) %>
|
11
|
+
tim : <%= Time.local(2000, 01, 01, n+8, n).in_time_zone.to_s(:db) %>
|
12
12
|
dat : <%= (Date.new(2009, 12, 24) + n).strftime("%Y-%m-%d") %>
|
13
13
|
bin : <%= "BLOB#{n}" * n %>
|
14
14
|
bln : <%= n % 2 > 0 ? true : false %>
|
data/test/helper.rb
CHANGED
data/test/test_view_helpers.rb
CHANGED
@@ -321,6 +321,21 @@ class TestViewHelpers < ActionView::TestCase
|
|
321
321
|
@s = Company.search
|
322
322
|
end
|
323
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
|
+
|
324
339
|
context "sorted by name ascending" do
|
325
340
|
setup do
|
326
341
|
@s.meta_sort = 'name.asc'
|
@@ -336,6 +351,21 @@ class TestViewHelpers < ActionView::TestCase
|
|
336
351
|
sort_link(@s, :created_at, :controller => 'companies')
|
337
352
|
end
|
338
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
|
+
|
339
369
|
context "with existing search options" do
|
340
370
|
setup do
|
341
371
|
@s.name_contains = 'a'
|
@@ -347,6 +377,27 @@ class TestViewHelpers < ActionView::TestCase
|
|
347
377
|
end
|
348
378
|
end
|
349
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
|
350
401
|
end
|
351
402
|
|
352
403
|
context "A developer search" do
|
@@ -381,4 +432,4 @@ class TestViewHelpers < ActionView::TestCase
|
|
381
432
|
end
|
382
433
|
end
|
383
434
|
end
|
384
|
-
end
|
435
|
+
end
|
metadata
CHANGED
@@ -1,71 +1,70 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: meta_search
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0.pre2
|
4
5
|
prerelease: 6
|
5
|
-
version: 1.1.0.pre
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Ernie Miller
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-07-07 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: shoulda
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2162080940 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version:
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
24
22
|
type: :development
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: activerecord
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: *2162080940
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: activerecord
|
27
|
+
requirement: &2162080440 !ruby/object:Gem::Requirement
|
30
28
|
none: false
|
31
|
-
requirements:
|
29
|
+
requirements:
|
32
30
|
- - ~>
|
33
|
-
- !ruby/object:Gem::Version
|
31
|
+
- !ruby/object:Gem::Version
|
34
32
|
version: 3.1.0.alpha
|
35
33
|
type: :runtime
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: activesupport
|
39
34
|
prerelease: false
|
40
|
-
|
35
|
+
version_requirements: *2162080440
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: activesupport
|
38
|
+
requirement: &2162079960 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
40
|
+
requirements:
|
43
41
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
42
|
+
- !ruby/object:Gem::Version
|
45
43
|
version: 3.1.0.alpha
|
46
44
|
type: :runtime
|
47
|
-
version_requirements: *id003
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: actionpack
|
50
45
|
prerelease: false
|
51
|
-
|
46
|
+
version_requirements: *2162079960
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: actionpack
|
49
|
+
requirement: &2162079460 !ruby/object:Gem::Requirement
|
52
50
|
none: false
|
53
|
-
requirements:
|
51
|
+
requirements:
|
54
52
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
53
|
+
- !ruby/object:Gem::Version
|
56
54
|
version: 3.1.0.alpha
|
57
55
|
type: :runtime
|
58
|
-
|
59
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2162079460
|
58
|
+
description: ! "\n Allows simple search forms to be created against an AR3 model\n
|
59
|
+
\ and its associations, has useful view helpers for sort links\n and multiparameter
|
60
|
+
fields as well.\n "
|
60
61
|
email: ernie@metautonomo.us
|
61
62
|
executables: []
|
62
|
-
|
63
63
|
extensions: []
|
64
|
-
|
65
|
-
extra_rdoc_files:
|
64
|
+
extra_rdoc_files:
|
66
65
|
- LICENSE
|
67
66
|
- README.rdoc
|
68
|
-
files:
|
67
|
+
files:
|
69
68
|
- .document
|
70
69
|
- .gitmodules
|
71
70
|
- CHANGELOG
|
@@ -107,35 +106,39 @@ files:
|
|
107
106
|
- test/test_view_helpers.rb
|
108
107
|
homepage: http://metautonomo.us/projects/metasearch/
|
109
108
|
licenses: []
|
109
|
+
post_install_message: ! '
|
110
110
|
|
111
|
-
|
112
|
-
|
113
|
-
Be sure to check out http://metautonomo.us/projects/metasearch/ for a
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
111
|
+
*** Thanks for installing MetaSearch! ***
|
112
|
+
|
113
|
+
Be sure to check out http://metautonomo.us/projects/metasearch/ for a
|
114
|
+
|
115
|
+
walkthrough of MetaSearch''s features, and click the donate button if
|
116
|
+
|
117
|
+
you''re feeling especially appreciative. It''d help me justify this
|
118
118
|
|
119
|
-
|
119
|
+
"open source" stuff to my lovely wife. :)
|
120
|
+
|
121
|
+
|
122
|
+
'
|
123
|
+
rdoc_options: []
|
124
|
+
require_paths:
|
120
125
|
- lib
|
121
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
127
|
none: false
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version:
|
127
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
133
|
none: false
|
129
|
-
requirements:
|
130
|
-
- -
|
131
|
-
- !ruby/object:Gem::Version
|
134
|
+
requirements:
|
135
|
+
- - ! '>'
|
136
|
+
- !ruby/object:Gem::Version
|
132
137
|
version: 1.3.1
|
133
138
|
requirements: []
|
134
|
-
|
135
139
|
rubyforge_project:
|
136
|
-
rubygems_version: 1.
|
140
|
+
rubygems_version: 1.8.5
|
137
141
|
signing_key:
|
138
142
|
specification_version: 3
|
139
143
|
summary: Object-based searching (and more) for simply creating search forms.
|
140
144
|
test_files: []
|
141
|
-
|