alphabetical_paginate 0.2.6 → 0.2.8
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/alphabetical_paginate/array.rb +21 -14
- data/lib/alphabetical_paginate/version.rb +1 -1
- data/lib/alphabetical_paginate/view_helpers.rb +42 -7
- data/spec/alphabetical_paginate_spec.rb +2 -2
- metadata +2 -14
- data/.alphabetical_paginate.gemspec.swp +0 -0
- data/lib/.alphabetical_paginate.rb.swp +0 -0
- data/lib/alphabetical_paginate/.array.rb.swp +0 -0
- data/lib/alphabetical_paginate/.engine.rb.swp +0 -0
- data/lib/alphabetical_paginate/.railtie.rb.swp +0 -0
- data/lib/alphabetical_paginate/.view_helpers.rb.swp +0 -0
- data/spec/.alpha_example.rb.swp +0 -0
- data/spec/.alphabetical_paginate_spec.rb.swp +0 -0
- data/spec/support/.helpers.rb.swp +0 -0
@@ -1,32 +1,39 @@
|
|
1
1
|
class Array
|
2
|
-
def alpha_paginate current_field, enumerate
|
2
|
+
def alpha_paginate current_field, params = {enumerate:false, default_field: "a",
|
3
|
+
paginate_all: false, numbers: true,
|
4
|
+
others: true, pagination_class: "pagination-centered"}
|
3
5
|
output = []
|
4
6
|
params = {}
|
5
7
|
availableLetters = {}
|
6
8
|
if current_field == nil
|
7
|
-
current_field =
|
9
|
+
current_field = default_field
|
8
10
|
end
|
9
11
|
self.each do |x|
|
10
|
-
field_val = block_given? ? yield(x) : x.id.to_s
|
12
|
+
field_val = block_given? ? yield(x).to_s : x.id.to_s
|
11
13
|
field_letter = field_val.force_encoding(Encoding::ASCII_8BIT)[0]
|
12
|
-
case
|
14
|
+
case field_letter
|
13
15
|
when /[a-z]/
|
14
16
|
availableLetters[field_letter] = true if !availableLetters.has_key? field_letter
|
15
|
-
output << x if field_letter == current_field
|
16
|
-
when
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
output << x if current_field =~ /[a-z]/ && field_letter == current_field
|
18
|
+
when /[0-9]/
|
19
|
+
if params[:enumerate]
|
20
|
+
availableLetters[field_letter] = true if !availableLetters.has_key? field_letter
|
21
|
+
output << x if current_field =~ /[0-9]/ && field_letter == current_field
|
22
|
+
else
|
23
|
+
availableLetters['numbers'] = true if !availableLetters.has_key? 'numbers'
|
24
|
+
output << x if current_field == "numbers"
|
25
|
+
end
|
26
|
+
else
|
23
27
|
availableLetters['other'] = true if !availableLetters.has_key? 'other'
|
24
|
-
output << x if
|
28
|
+
output << x if current_field == "other"
|
25
29
|
end
|
26
30
|
end
|
27
31
|
params[:availableLetters] = availableLetters.collect{|k,v| k.to_s}
|
28
32
|
params[:currentField] = current_field
|
29
|
-
params[:
|
33
|
+
params[:paginate_all] ||= false
|
34
|
+
params[:numbers] ||= true
|
35
|
+
params[:others] ||= true
|
36
|
+
params[:pagination_class] ||= "pagination-centered"
|
30
37
|
return output, params
|
31
38
|
end
|
32
39
|
end
|
@@ -1,20 +1,55 @@
|
|
1
1
|
module AlphabeticalPaginate
|
2
2
|
module ViewHelpers
|
3
|
-
def alphabetical_paginate params
|
4
|
-
|
3
|
+
def alphabetical_paginate params
|
4
|
+
|
5
|
+
output = javascript_include_tag 'alphabetical_paginate'
|
6
|
+
|
7
|
+
if params[:paginate_all]
|
8
|
+
range = ('a'..'z').to_a
|
9
|
+
if params[:others]
|
10
|
+
range += ["#"]
|
11
|
+
end
|
12
|
+
if params[:enumerate] && params[:numbers]
|
13
|
+
range = (0..9).to_a.map{|x| x.to_s} + range
|
14
|
+
elsif params[:numbers]
|
15
|
+
range = ["0"] + range
|
16
|
+
end
|
17
|
+
range.each.do |l|
|
18
|
+
if l == params[:currentField]
|
19
|
+
links += '<li class="active"><a href="#" data-letter="' + l + '">' + l + "</a></li>\n"
|
20
|
+
elsif params[:availableLetters].contains? l
|
21
|
+
links += '<li><a href="#" data-letter="' + l + '">' + l + "</a></li>\n"
|
22
|
+
else
|
23
|
+
links += '<li class="disabled"><a href="#" data-letter="' + l + '">' + l + "</a></li>\n"
|
24
|
+
end
|
25
|
+
else
|
26
|
+
params[:availableLetters] -= (0..9).to_a.map{|x| x.to_s} if !params[:numbers]
|
27
|
+
params[:availableLetters] -= ["#"] if !params[:others]
|
28
|
+
|
29
|
+
params[:availableLetters].each do |l|
|
30
|
+
if l == params[:currentField]
|
31
|
+
links += '<li class="active"><a href="#" data-letter="' + l + '">' + l + "</a></li>\n"
|
32
|
+
else
|
33
|
+
links += '<li><a href="#" data-letter="' + l + '">' + l + "</a></li>\n"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
5
37
|
|
6
|
-
links = ""
|
7
38
|
|
8
|
-
params[:
|
9
|
-
|
39
|
+
if params[:pagination_class] != "none"
|
40
|
+
pagination = '<div class="pagination %s">\n' % params[:pagination_class]
|
41
|
+
else
|
42
|
+
pagination = '<div class="pagination">\n'
|
10
43
|
end
|
11
|
-
pagination
|
44
|
+
pagination +=
|
12
45
|
"<ul>\n" +
|
46
|
+
"<li><a id='paginate-prev' href='#'>Prev</a></li>"
|
13
47
|
"%s" % links +
|
14
48
|
"</ul\n" +
|
49
|
+
"<li><a id='paginate-next' href='#'>Next</a></li>" +
|
15
50
|
"</div>"
|
16
51
|
|
17
|
-
output += pagination
|
52
|
+
output += pagination.html_safe
|
18
53
|
end
|
19
54
|
end
|
20
55
|
end
|
@@ -26,7 +26,7 @@ module AlphabeticalPaginate
|
|
26
26
|
collection, params = @list.alpha_paginate("b")
|
27
27
|
collection.to_s.should ==
|
28
28
|
expectedCollection.to_s
|
29
|
-
params.to_s.should
|
29
|
+
params.to_s.should include
|
30
30
|
expectedParams.to_s
|
31
31
|
end
|
32
32
|
|
@@ -44,7 +44,7 @@ module AlphabeticalPaginate
|
|
44
44
|
end
|
45
45
|
collection.to_s.should ==
|
46
46
|
expectedCollection.to_s
|
47
|
-
params.to_s.should
|
47
|
+
params.to_s.should include
|
48
48
|
expectedParams.to_s
|
49
49
|
end
|
50
50
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alphabetical_paginate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
prerelease:
|
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-07-
|
12
|
+
date: 2013-07-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -82,29 +82,20 @@ executables: []
|
|
82
82
|
extensions: []
|
83
83
|
extra_rdoc_files: []
|
84
84
|
files:
|
85
|
-
- .alphabetical_paginate.gemspec.swp
|
86
85
|
- .gitignore
|
87
86
|
- Gemfile
|
88
87
|
- LICENSE.txt
|
89
88
|
- README.md
|
90
89
|
- Rakefile
|
91
90
|
- alphabetical_paginate.gemspec
|
92
|
-
- lib/.alphabetical_paginate.rb.swp
|
93
91
|
- lib/alphabetical_paginate.rb
|
94
|
-
- lib/alphabetical_paginate/.array.rb.swp
|
95
|
-
- lib/alphabetical_paginate/.engine.rb.swp
|
96
|
-
- lib/alphabetical_paginate/.railtie.rb.swp
|
97
|
-
- lib/alphabetical_paginate/.view_helpers.rb.swp
|
98
92
|
- lib/alphabetical_paginate/array.rb
|
99
93
|
- lib/alphabetical_paginate/engine.rb
|
100
94
|
- lib/alphabetical_paginate/railtie.rb
|
101
95
|
- lib/alphabetical_paginate/version.rb
|
102
96
|
- lib/alphabetical_paginate/view_helpers.rb
|
103
|
-
- spec/.alpha_example.rb.swp
|
104
|
-
- spec/.alphabetical_paginate_spec.rb.swp
|
105
97
|
- spec/alpha_example.rb
|
106
98
|
- spec/alphabetical_paginate_spec.rb
|
107
|
-
- spec/support/.helpers.rb.swp
|
108
99
|
- spec/support/helpers.rb
|
109
100
|
- vendor/assets/javascripts/alphabetical_paginate.js
|
110
101
|
- vendor/assets/javascripts/index.js
|
@@ -134,9 +125,6 @@ signing_key:
|
|
134
125
|
specification_version: 3
|
135
126
|
summary: Pagination
|
136
127
|
test_files:
|
137
|
-
- spec/.alpha_example.rb.swp
|
138
|
-
- spec/.alphabetical_paginate_spec.rb.swp
|
139
128
|
- spec/alpha_example.rb
|
140
129
|
- spec/alphabetical_paginate_spec.rb
|
141
|
-
- spec/support/.helpers.rb.swp
|
142
130
|
- spec/support/helpers.rb
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/spec/.alpha_example.rb.swp
DELETED
Binary file
|
Binary file
|
Binary file
|