alphabetical_paginate 1.6.0 → 1.6.1

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.
@@ -1,9 +1,9 @@
1
1
  # coding: utf-8
2
2
  class Array
3
3
  def alpha_paginate current_field, params = {enumerate:false, default_field: "a",
4
- paginate_all: false, numbers: true, include_all: true,
5
- others: true, pagination_class: "pagination-centered",
6
- js: true, support_language: :en}
4
+ paginate_all: false, numbers: true, include_all: true,
5
+ others: true, pagination_class: "pagination-centered",
6
+ js: true, support_language: :en}
7
7
  params[:paginate_all] ||= false
8
8
  params[:support_language] ||= :en
9
9
  params[:language] = AlphabeticalPaginate::Language.new(params[:support_language])
@@ -18,7 +18,8 @@ class Array
18
18
  if current_field == nil
19
19
  current_field = params[:default_field]
20
20
  end
21
- all = params[:include_all] && current_field.downcase == "all"
21
+ current_field = current_field.mb_chars.downcase.to_s
22
+ all = params[:include_all] && current_field == "all"
22
23
 
23
24
  self.each do |x|
24
25
  field_val = block_given? ? yield(x).to_s : x.id.to_s
@@ -41,8 +42,8 @@ class Array
41
42
  end
42
43
  end
43
44
 
44
- params[:availableLetters] = availableLetters.collect{|k,v| k.to_s}
45
- params[:currentField] = current_field
45
+ params[:availableLetters] = availableLetters.collect{ |k,v| k.mb_chars.capitalize.to_s }
46
+ params[:currentField] = current_field.mb_chars.capitalize.to_s
46
47
  output.sort! {|x, y| block_given? ? (yield(x).to_s <=> yield(y).to_s) : (x.id.to_s <=> y.id.to_s) }
47
48
  return output, params
48
49
  end
@@ -28,7 +28,8 @@ module AlphabeticalPaginate
28
28
  if current_field == nil
29
29
  current_field = params[:default_field]
30
30
  end
31
- all = params[:include_all] && current_field.downcase == "all"
31
+ current_field = current_field.mb_chars.downcase.to_s
32
+ all = params[:include_all] && current_field == "all"
32
33
 
33
34
  if params[:db_mode]
34
35
  if !ActiveRecord::Base.connection.adapter_name.downcase.include? "mysql"
@@ -40,7 +41,7 @@ module AlphabeticalPaginate
40
41
  if all
41
42
  output = self
42
43
  else
43
- case current_field[0].mb_chars.downcase.to_s
44
+ case current_field
44
45
  when params[:language].letters_regexp
45
46
  output = self.where("LOWER(%s) REGEXP '^%s.*'" % [params[:db_field], current_field])
46
47
  when /[0-9]/
@@ -77,10 +78,10 @@ module AlphabeticalPaginate
77
78
  output << x if all || current_field == "*"
78
79
  end
79
80
  end
80
- params[:availableLetters] = availableLetters.collect{|k,v| k.to_s}
81
+ params[:availableLetters] = availableLetters.collect{ |k,v| k.mb_chars.capitalize.to_s }
81
82
  output.sort! {|x, y| block_given? ? (yield(x).to_s <=> yield(y).to_s) : (x.id.to_s <=> y.id.to_s) }
82
83
  end
83
- params[:currentField] = current_field
84
+ params[:currentField] = current_field.mb_chars.capitalize.to_s
84
85
  return output, params
85
86
  end
86
87
  end
@@ -12,34 +12,32 @@ module AlphabeticalPaginate
12
12
  end
13
13
 
14
14
  def letters_regexp
15
- russian? ? /[#{russian_letters}]/ : /[a-z]/
15
+ russian? ? /[а-яА-Я]/ : /[a-zA-Z]/
16
16
  end
17
17
 
18
+ def default_letter
19
+ russian? ? "а" : "a" # First 'a' is russian, second - english
20
+ end
21
+
22
+ # used in view_helper
18
23
  def letters_range
19
24
  if russian?
20
25
  letters = []
21
- russian_letters.each_char{ |x| letters << x }
26
+ "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЭЮЯ".each_char{ |x| letters << x }
22
27
  letters
23
28
  else
24
- ('a'..'z').to_a
29
+ ('A'..'Z').to_a
25
30
  end
26
31
  end
27
32
 
33
+ # used in view_helper
28
34
  def output_letter(l)
29
- (l == "all") ? all_field : l
35
+ (l == "All") ? all_field : l
30
36
  end
31
37
 
38
+ # used in view_helper
32
39
  def all_field
33
- russian? ? 'все' : "all"
34
- end
35
-
36
- def default_letter
37
- russian? ? "а" : "a" # First 'a' is russian, second - english
40
+ russian? ? 'Все' : "All"
38
41
  end
39
-
40
- private
41
- def russian_letters
42
- "абвгдежзиклмнопрстуфхцчшэюя"
43
- end
44
42
  end
45
43
  end
@@ -1,3 +1,3 @@
1
1
  module AlphabeticalPaginate
2
- VERSION = "1.6.0"
2
+ VERSION = "1.6.1"
3
3
  end
@@ -17,7 +17,7 @@ module AlphabeticalPaginate
17
17
  elsif params[:numbers]
18
18
  range = ["0-9"] + range
19
19
  end
20
- range.unshift "all" if params[:include_all]
20
+ range.unshift "All" if params[:include_all]
21
21
  range.each do |l|
22
22
  value = params[:language].output_letter(l)
23
23
  if l == params[:currentField]
@@ -31,7 +31,7 @@ module AlphabeticalPaginate
31
31
  else
32
32
  params[:availableLetters].sort!
33
33
  params[:availableLetters] = params[:availableLetters][1..-1] + ["*"] if params[:availableLetters][0] == "*"
34
- params[:availableLetters].unshift "all" if params[:include_all]
34
+ params[:availableLetters].unshift "All" if params[:include_all]
35
35
  params[:availableLetters] -= (1..9).to_a.map{|x| x.to_s} if !params[:numbers]
36
36
  params[:availableLetters] -= ["*"] if !params[:others]
37
37
 
@@ -109,8 +109,8 @@ module AlphabeticalPaginate
109
109
  describe "#alphabetical_paginate" do
110
110
  before :each do
111
111
  @list = []
112
- (["@!#"] + (0..9).to_a.map{|x| x.to_s} + ("a".."z").to_a).each do |x|
113
- ("a".."y").to_a.each do |y|
112
+ (["@!#"] + (0..9).to_a.map{|x| x.to_s} + ("A".."Z").to_a).each do |x|
113
+ ("A".."Y").to_a.each do |y|
114
114
  @list << x + y
115
115
  end
116
116
  end
@@ -128,7 +128,7 @@ module AlphabeticalPaginate
128
128
  it "should include a numbers and others field" do
129
129
  index, params = @list.alpha_paginate(nil)
130
130
  pagination = alphabetical_paginate(params)
131
- (["*"] + ["0-9"] + ("a".."z").to_a.map{|x|
131
+ (["*"] + ["0-9"] + ("A".."Z").to_a.map{|x|
132
132
  'data-letter="%s"'%x}).each do |x|
133
133
  pagination.should include x
134
134
  end
@@ -137,7 +137,7 @@ module AlphabeticalPaginate
137
137
  it "should default all values when necessary" do
138
138
  index, params = @list.alpha_paginate(nil, {})
139
139
  pagination = alphabetical_paginate(params)
140
- (["*"] + ["0-9"] + ("a".."z").to_a.map{|x|
140
+ (["*"] + ["0-9"] + ("A".."Z").to_a.map{|x|
141
141
  'data-letter="%s"'%x}).each do |x|
142
142
  pagination.should include x
143
143
  end
@@ -146,11 +146,11 @@ module AlphabeticalPaginate
146
146
  it "should hide values that don't exist" do
147
147
  index, params = @list.alpha_paginate(nil){|x| x.word}
148
148
  pagination = alphabetical_paginate(params)
149
- (("a".."y").to_a.map{|x|
149
+ (("A".."Y").to_a.map{|x|
150
150
  'data-letter="%s"'%x}).each do |x|
151
151
  pagination.should include x
152
152
  end
153
- pagination.should_not include 'data-letter="z"', 'data-letter="*"',
153
+ pagination.should_not include 'data-letter="Z"', 'data-letter="*"',
154
154
  'data-letter="0-9"'
155
155
  end
156
156
 
@@ -168,7 +168,7 @@ module AlphabeticalPaginate
168
168
  index, params = @list.alpha_paginate(nil, {paginate_all: true,
169
169
  enumerate: true}){|x| x.word}
170
170
  pagination = alphabetical_paginate(params)
171
- (["*"] + (0..9).to_a.map{|x| x.to_s} + ("a".."z").to_a.map{|x|
171
+ (["*"] + (0..9).to_a.map{|x| x.to_s} + ("A".."Z").to_a.map{|x|
172
172
  'data-letter="%s"'%x}).each do |x|
173
173
  pagination.should include x
174
174
  end
@@ -177,7 +177,7 @@ module AlphabeticalPaginate
177
177
  it "should include 'all' and '0-9' fields" do
178
178
  index, params = @list.alpha_paginate(nil, { include_all: true })
179
179
  pagination = alphabetical_paginate(params)
180
- (["all", "0-9"].map{|x|
180
+ (["All", "0-9"].map{|x|
181
181
  'data-letter="%s"'%x}).each do |x|
182
182
  pagination.should include x
183
183
  end
@@ -187,8 +187,8 @@ module AlphabeticalPaginate
187
187
  describe "#alphabetical_paginate in russian characters" do
188
188
  before :each do
189
189
  @list = []
190
- ("а".."я").to_a.each do |x|
191
- ("а".."т").to_a.each do |y|
190
+ ("А".."Я").to_a.each do |x|
191
+ ("А".."Т").to_a.each do |y|
192
192
  @list << x + y
193
193
  end
194
194
  end
@@ -196,7 +196,7 @@ module AlphabeticalPaginate
196
196
  AlphaExample.new(x)
197
197
  end
198
198
  @russian_array = []
199
- "абвгдежзиклмнопрстуфхцчшэюя".each_char{ |x| @russian_array << x }
199
+ "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЭЮЯ".each_char{ |x| @russian_array << x }
200
200
  end
201
201
 
202
202
  it "should display russian characters through additional attribute(language)" do
@@ -1,26 +1,28 @@
1
1
  # coding: utf-8
2
+ require 'alphabetical_paginate'
2
3
 
3
4
  module AlphabeticalPaginate
4
5
  describe Language do
5
6
  context "English language" do
6
7
  before(:all) do
7
- @language = AlphabeticalPaginate::Language.new(:en)
8
+ I18n.locale = :en
9
+ @language = AlphabeticalPaginate::Language.new(I18n.locale)
8
10
  end
9
11
 
10
12
  it "should return false on russian? method" do
11
13
  @language.russian?.should be_false
12
14
  end
13
15
 
14
- it "should return /[a-z]/ regexp" do
15
- @language.letters_regexp.should eq(/[a-z]/)
16
+ it "should return /[a-zA-Z]/ regexp" do
17
+ @language.letters_regexp.should eq(/[a-zA-Z]/)
16
18
  end
17
19
 
18
20
  it "should return array of english letters" do
19
- @language.letters_range.should eq(("a".."z").to_a)
21
+ @language.letters_range.should eq(("A".."Z").to_a)
20
22
  end
21
23
 
22
- it "should return english representation of 'all' field and other english letters (for view helper)" do
23
- (["all"] + ("a".."z").to_a).map do |l|
24
+ it "should return english representation of 'All' field and other english letters (for view helper)" do
25
+ (["All"] + ("A".."Z").to_a).map do |l|
24
26
  @language.output_letter(l).should eq(l)
25
27
  end
26
28
  end
@@ -32,8 +34,9 @@ module AlphabeticalPaginate
32
34
 
33
35
  context "Russian language" do
34
36
  before(:all) do
35
- @language = AlphabeticalPaginate::Language.new(:ru)
36
- @russian_string = "абвгдежзиклмнопрстуфхцчшэюя"
37
+ I18n.locale = :ru
38
+ @language = AlphabeticalPaginate::Language.new(I18n.locale)
39
+ @russian_string = "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЭЮЯ"
37
40
  @russian_array = []
38
41
  @russian_string.each_char{ |x| @russian_array << x }
39
42
  end
@@ -42,21 +45,21 @@ module AlphabeticalPaginate
42
45
  @language.russian?.should be_true
43
46
  end
44
47
 
45
- it "should return /[абвгдежзиклмнопрстуфхцчшэюя]/ regexp" do
46
- @language.letters_regexp.should eq(/[#{@russian_string}]/)
48
+ it "should return /[а-яА-Я]/ regexp" do
49
+ @language.letters_regexp.should eq(/[а-яА-Я]/)
47
50
  end
48
51
 
49
52
  it "should return array of russian letters" do
50
53
  @language.letters_range.should eq(@russian_array)
51
54
  end
52
55
 
53
- it "should return russian representation of 'all' field and other russian letters (for view helper)" do
54
- (["все"] + @russian_array).map do |l|
56
+ it "should return russian representation of 'All' field and other russian letters (for view helper)" do
57
+ (["Все"] + @russian_array).map do |l|
55
58
  @language.output_letter(l).should eq(l)
56
59
  end
57
60
  end
58
61
 
59
- it "should return russian representation of 'a' letter" do
62
+ it "should return russian representation of 'а' letter" do
60
63
  @language.default_letter.should eq("а")
61
64
  end
62
65
  end
@@ -9,7 +9,7 @@ $(function() {
9
9
  var url = location.href,
10
10
  letter = $(this).data("letter");
11
11
  if (/letter/.test(url)){
12
- url = url.replace(/letter=?.{1,3}/,"letter=" + letter);
12
+ url = url.replace(/letter=[^&]*/,"letter=" + letter);
13
13
  }
14
14
  else {
15
15
  if (/\?/.test(url)) {
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: 1.6.0
4
+ version: 1.6.1
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-08-14 00:00:00.000000000 Z
12
+ date: 2013-09-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler