alphabetical_paginate 0.2.6 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,32 +1,39 @@
1
1
  class Array
2
- def alpha_paginate current_field, enumerate=false
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 = self.sort[0].to_s[0]
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 current_field
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 "number"
17
- availableLetters['numbers'] = true if !availableLetters.has_key? 'numbers'
18
- output << x if field_letter =~ /[0-9]/
19
- when enumerate && /[0-9]/
20
- availableLetters[field_letter] = true if !availableLetters.has_key? field_letter
21
- output << x if field_letter == current_field
22
- when "other"
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 !field_letter =~ /[0-9a-z]/
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[:enumerate] = enumerate
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,3 +1,3 @@
1
1
  module AlphabeticalPaginate
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.8"
3
3
  end
@@ -1,20 +1,55 @@
1
1
  module AlphabeticalPaginate
2
2
  module ViewHelpers
3
- def alphabetical_paginate params, bootstrap=true
4
- output = javascript_include_tag 'alphabetical_paginate' + " \n"
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[:availableLetters].each do |l|
9
- links += '<li><a href="#" data-letter="' + l + '">' + l + "</a></li>\n"
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 = '<div class="pagination">\n' +
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.6
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-15 00:00:00.000000000 Z
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