alphabetical_paginate 2.2.3 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/README.md CHANGED
@@ -15,13 +15,21 @@ Some code was inspired by [will_paginate](https://github.com/mislav/will_paginat
15
15
 
16
16
  ## Installation
17
17
 
18
- Add this line to your application's Gemfile:
19
-
18
+ Add this line to your application's Gemfile:
19
+ ```
20
20
  gem 'alphabetical_paginate'
21
+ ```
21
22
 
22
- And then execute:
23
-
23
+ And then execute:
24
+ ```bash
24
25
  $ bundle install
26
+ ```
27
+
28
+ In case you're using the Rails 3.x assets pipeline remember to add it to your `production.rb` script:
29
+
30
+ ```rb
31
+ config.assets.precompile += %w( alphabetical_paginate.js )
32
+ ```
25
33
 
26
34
  ## Basic Setup
27
35
 
@@ -100,11 +108,11 @@ The available options are as follows:
100
108
 
101
109
  Key | Value | Default |Description
102
110
  --- | --- | --- | ---
103
- `:db_mode` | `Boolean` | `false` | Whether to activate low level SQL that are faster and more memory efficient (forces `:paginate_all` to enable)
111
+ `:db_mode` | `Boolean` | `false` | Whether to activate low level SQL that are faster and more memory efficient
104
112
  `:db_field` | `String` | `id` | Required if `db_mode` is `true`. The field to paginate / sort by (on the same collection).
105
113
  `:enumerate` | `Boolean` | `false` | Whether you want the number field collapsed (all numbers go into `0`) or separate (`0`, `1`, `2`...).
106
114
  `:default_field` | `String` | `"a"` | Which field you want the page to default to on first load (`"0"`, `"a"`. `"*"`).
107
- `:paginate_all` | `Boolean` | `false` | Whether you want empty fields to still render in pagination.
115
+ `:paginate_all` | `Boolean` | `false` | Whether you want empty fields to still render in pagination. If it's falsy and `db_mode` is thruty is will perform one more aggregation query: set it to true if performances matter.
108
116
  `:include_all` | `Boolean` | `true` | Whether you want `all` selector to be included in the pagination.
109
117
  `:numbers` | `Boolean` | `true` | Whether you want numbers to be included in the pagination at all, either collapsed, or expanded (depending on `:enumerate`).
110
118
  `:others` | `Boolean` | `true` | Whether you want all other characters (non alphanumeric) to be included in the pagination at all.
@@ -3,7 +3,8 @@ class Array
3
3
  def alpha_paginate current_field, params = {enumerate:false, default_field: "a",
4
4
  paginate_all: false, numbers: true, include_all: true,
5
5
  others: true, pagination_class: "pagination-centered",
6
- js: true, support_language: :en, bootstrap3: false}
6
+ js: true, support_language: :en, bootstrap3: false,
7
+ slugged_link: false, slug_field: "slug"}
7
8
  params[:paginate_all] ||= false
8
9
  params[:support_language] ||= :en
9
10
  params[:language] = AlphabeticalPaginate::Language.new(params[:support_language])
@@ -13,21 +14,29 @@ class Array
13
14
  params[:js] = true if !params.has_key? :js
14
15
  params[:default_field] ||= params[:include_all] ? "all" : params[:language].default_letter
15
16
  params[:pagination_class] ||= "pagination-centered"
17
+ params[:slugged_link] ||= false
18
+ params[:slugged_link] = params[:slugged_link] && defined?(Babosa)
19
+ params[:slug_field] ||= "slug"
20
+
16
21
  output = []
17
22
  availableLetters = {}
18
- if current_field == nil
19
- current_field = params[:default_field]
20
- end
23
+
24
+ current_field ||= params[:default_field]
21
25
  current_field = current_field.mb_chars.downcase.to_s
22
26
  all = params[:include_all] && current_field == "all"
23
27
 
24
28
  self.each do |x|
29
+ slug = eval("x.#{params[:slug_field]}") if params[:slugged_link]
30
+
25
31
  field_val = block_given? ? yield(x).to_s : x.id.to_s
26
32
  field_letter = field_val[0].mb_chars.downcase.to_s
33
+
27
34
  case field_letter
28
35
  when params[:language].letters_regexp
29
36
  availableLetters[field_letter] = true if !availableLetters.has_key? field_letter
30
- output << x if all || (current_field =~ params[:language].letters_regexp && field_letter == current_field)
37
+ regexp = params[:slugged_link] ? params[:language].slugged_regexp : params[:language].letters_regexp
38
+ field = params[:slugged_link] ? slug : field_letter
39
+ output << x if all || (current_field =~ regexp && current_field == field)
31
40
  when /[0-9]/
32
41
  if params[:enumerate]
33
42
  availableLetters[field_letter] = true if !availableLetters.has_key? field_letter
@@ -10,7 +10,8 @@ module AlphabeticalPaginate
10
10
  batch_size: 500, db_mode: false,
11
11
  db_field: "id", include_all: true,
12
12
  js: true, support_language: :en,
13
- bootstrap3: false}
13
+ bootstrap3: false, slugged_link: false,
14
+ slug_field: "slug"}
14
15
  params[:paginate_all] ||= false
15
16
  params[:support_language] ||= :en
16
17
  params[:language] = AlphabeticalPaginate::Language.new(params[:support_language])
@@ -20,15 +21,29 @@ module AlphabeticalPaginate
20
21
  params[:js] = true if !params.has_key? :js
21
22
  params[:pagination_class] ||= "pagination-centered"
22
23
  params[:batch_size] ||= 500
23
- params[:default_field] ||= params[:include_all] ? "all" : params[:language].default_letter
24
24
  params[:db_mode] ||= false
25
25
  params[:db_field] ||= "id"
26
+ params[:slugged_link] ||= false
27
+ params[:slugged_link] = params[:slugged_link] && defined?(Babosa)
28
+ params[:slug_field] ||= "slug"
26
29
 
27
30
  output = []
31
+
32
+ if params[:db_mode]
33
+ letters = nil
34
+ if !params[:paginate_all]
35
+ letters = filter_by_cardinality( find_available_letters(params[:db_field]) )
36
+ set_default_field letters, params
37
+ end
38
+ params[:availableLetters] = letters.nil? ? [] : letters
39
+ end
28
40
 
29
- if current_field == nil
30
- current_field = params[:default_field]
41
+ if params[:include_all]
42
+ current_field ||= 'all'
43
+ all = current_field == "all"
31
44
  end
45
+
46
+ current_field ||= params[:default_field]
32
47
  current_field = current_field.mb_chars.downcase.to_s
33
48
  all = params[:include_all] && current_field == "all"
34
49
 
@@ -36,34 +51,42 @@ module AlphabeticalPaginate
36
51
  if !ActiveRecord::Base.connection.adapter_name.downcase.include? "mysql"
37
52
  raise "You need a mysql database to use db_mode with alphabetical_paginate"
38
53
  end
39
- params[:paginate_all] = true
40
- params[:availableLetters] = []
41
54
 
42
55
  if all
43
56
  output = self
44
57
  else
45
- case current_field
46
- when params[:language].letters_regexp
47
- output = self.where("LOWER(%s) REGEXP '^%s.*'" % [params[:db_field], current_field])
48
- when /[0-9]/
49
- if params[:enumerate]
50
- output = self.where("LOWER(%s) REGEXP '^%s.*'" % [params[:db_field], current_field])
51
- else
52
- output = self.where("LOWER(%s) REGEXP '^[0-9].*'" % [params[:db_field], current_field])
53
- end
58
+
59
+ # In this case we can speed up the search taking advantage of the indices
60
+ can_go_quicker = (current_field =~ params[:language].letters_regexp) || (current_field =~ /[0-9]/ && params[:enumerate])
61
+
62
+
63
+ # Use LIKE the most as you can to take advantage of indeces on the field when available
64
+ # REGEXP runs always a full scan of the table!
65
+ # For more information about LIKE and indeces have a look at
66
+ # http://myitforum.com/cs2/blogs/jnelson/archive/2007/11/16/108354.aspx
67
+
68
+ # Also use some sanitization from ActiveRecord for the current field passed
69
+ if can_go_quicker
70
+ output = self.where("LOWER(%s) LIKE ?" % params[:db_field], current_field+'%')
54
71
  else
55
- output = self.where("LOWER(%s) REGEXP '^[^a-z0-9].*'" % [params[:db_field], current_field])
72
+ regexp_to_check = current_field =~ /[0-9]/ ? '^[0-9]' : '^[^a-z0-9]'
73
+ output = self.where("LOWER(%s) REGEXP '%s.*'" % [params[:db_field], regexp_to_check])
56
74
  end
57
75
  end
58
76
  else
59
77
  availableLetters = {}
60
78
  self.find_each({batch_size: params[:batch_size]}) do |x|
79
+ slug = eval("x.#{params[:slug_field]}") if params[:slugged_link]
80
+
61
81
  field_val = block_given? ? yield(x).to_s : x.id.to_s
62
82
  field_letter = field_val[0].mb_chars.downcase.to_s
83
+
63
84
  case field_letter
64
85
  when params[:language].letters_regexp
65
86
  availableLetters[field_letter] = true if !availableLetters.has_key? field_letter
66
- output << x if all || (current_field =~ params[:language].letters_regexp && field_letter == current_field)
87
+ regexp = params[:slugged_link] ? params[:language].slugged_regexp : params[:language].letters_regexp
88
+ field = params[:slugged_link] ? slug : field_letter
89
+ output << x if all || (current_field =~ regexp && current_field == field)
67
90
  when /[0-9]/
68
91
  if params[:enumerate]
69
92
  availableLetters[field_letter] = true if !availableLetters.has_key? field_letter
@@ -83,5 +106,38 @@ module AlphabeticalPaginate
83
106
  params[:currentField] = current_field.mb_chars.capitalize.to_s
84
107
  return ((params[:db_mode] && params[:db_field]) ? output.order("#{params[:db_field]} ASC") : output), params
85
108
  end
109
+
110
+ private
111
+
112
+ def set_default_field(letters, params)
113
+ if letters.any?
114
+ params[:default_field] = letters.first
115
+ elsif params[:include_all]
116
+ params[:default_field] = 'all'
117
+ else
118
+ params[:default_field] = params[:language].default_letter
119
+ end
120
+ end
121
+
122
+ def filter_by_cardinality(letters)
123
+ letters.collect do |letter, count|
124
+ if count > 0
125
+ letter = letter.mb_chars.capitalize.to_s
126
+ (letter =~ /[A-Z]/).nil? ? '*' : letter
127
+ else
128
+ nil
129
+ end
130
+ # repass again to filter duplicates *
131
+ end.uniq
132
+ end
133
+
134
+ def find_available_letters(db_field)
135
+ # safe the field (look for the ActiveRecord valid attributes)
136
+ if db_field.nil? || !self.attribute_names.include?(db_field)
137
+ db_field = 'id'
138
+ end
139
+ criteria = "substr( %s, 1 , 1)" % db_field
140
+ self.select(criteria).group(criteria).order(criteria).count(db_field)
141
+ end
86
142
  end
87
143
  end
@@ -1,6 +1,11 @@
1
1
  # coding: utf-8
2
2
  module AlphabeticalPaginate
3
3
  class Language
4
+ APPROXIMATIONS = {
5
+ "Э" => "je",
6
+ "Ю" => "yu"
7
+ }
8
+
4
9
  attr_reader :code
5
10
 
6
11
  def initialize(code)
@@ -15,6 +20,10 @@ module AlphabeticalPaginate
15
20
  russian? ? /[а-яА-Я]/ : /[a-zA-Z]/
16
21
  end
17
22
 
23
+ def slugged_regexp
24
+ /^(#{slugged_letters.values.join("|")})$/
25
+ end
26
+
18
27
  def default_letter
19
28
  russian? ? "а" : "a" # First 'a' is russian, second - english
20
29
  end
@@ -22,14 +31,18 @@ module AlphabeticalPaginate
22
31
  # used in view_helper
23
32
  def letters_range
24
33
  if russian?
25
- letters = []
26
- "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЭЮЯ".each_char{ |x| letters << x }
27
- letters
34
+ ["А","Б","В","Г","Д","Е","Ж","З","И","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Э","Ю","Я"]
28
35
  else
29
- ('A'..'Z').to_a
36
+ ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
30
37
  end
31
38
  end
32
39
 
40
+ def slugged_letters
41
+ hash = { "All" => "all" }
42
+ letters_range.each{ |x| hash[x] = normalize(x) }
43
+ hash
44
+ end
45
+
33
46
  # used in view_helper
34
47
  def output_letter(l)
35
48
  (l == "All") ? all_field : l
@@ -39,5 +52,15 @@ module AlphabeticalPaginate
39
52
  def all_field
40
53
  russian? ? 'Все' : "All"
41
54
  end
55
+
56
+ private
57
+
58
+ def normalize(letter)
59
+ if russian?
60
+ APPROXIMATIONS[letter] || letter.to_s.to_slug.normalize(transliterations: :russian).to_s
61
+ else
62
+ letter.to_s.to_slug.normalize.to_s
63
+ end
64
+ end
42
65
  end
43
66
  end
@@ -1,3 +1,3 @@
1
1
  module AlphabeticalPaginate
2
- VERSION = "2.2.3"
2
+ VERSION = "2.3.0"
3
3
  end
@@ -1,62 +1,73 @@
1
1
  # coding: utf-8
2
2
  module AlphabeticalPaginate
3
3
  module ViewHelpers
4
- def alphabetical_paginate params
4
+ def alphabetical_paginate(options = {})
5
5
  output = ""
6
6
  links = ""
7
-
8
- output += javascript_include_tag 'alphabetical_paginate' if params[:js]
9
-
10
- if params[:paginate_all]
11
- range = params[:language].letters_range
12
- if params[:others]
7
+ output += javascript_include_tag 'alphabetical_paginate' if options[:js] == true
8
+ options[:scope] ||= main_app
9
+
10
+ if options[:paginate_all]
11
+ range = options[:language].letters_range
12
+ if options[:others]
13
13
  range += ["*"]
14
14
  end
15
- if params[:enumerate] && params[:numbers]
15
+ if options[:enumerate] && options[:numbers]
16
16
  range = (0..9).to_a.map{|x| x.to_s} + range
17
- elsif params[:numbers]
17
+ elsif options[:numbers]
18
18
  range = ["0-9"] + range
19
19
  end
20
- range.unshift "All" if (params[:include_all] && !range.include?("All"))
20
+ range.unshift "All" if (options[:include_all] && !range.include?("All"))
21
21
  range.each do |l|
22
- value = params[:language].output_letter(l)
23
- if l == params[:currentField]
24
- links += '<li class="active"><a href="#" data-letter="' + l + '">' + value + "</a></li>"
25
- elsif params[:db_mode] or params[:availableLetters].include? l
26
- links += '<li><a href="?letter=' + l + '" data-letter="' + l + '">' + value + "</a></li>"
22
+ link_letter = l
23
+ if options[:slugged_link] && (l =~ options[:language].letters_regexp || l == "All")
24
+ link_letter = options[:language].slugged_letters[l]
25
+ end
26
+
27
+ url = options[:scope].url_for(:letter => link_letter)
28
+ value = options[:language].output_letter(l)
29
+ if l == options[:currentField]
30
+ links += content_tag(:li, link_to(value, "#", "data-letter" => l), :class => "active")
31
+ elsif options[:db_mode] or options[:availableLetters].include? l
32
+ links += content_tag(:li, link_to(value, url, "data-letter" => l))
27
33
  else
28
- links += '<li class="disabled"><a href="?letter=' + l + '" data-letter="' + l + '">' + value + "</a></li>"
34
+ links += content_tag(:li, link_to(value, url, "data-letter" => l), :class => "disabled")
29
35
  end
30
36
  end
31
37
  else
32
- params[:availableLetters].sort!
33
- params[:availableLetters] = params[:availableLetters][1..-1] + ["*"] if params[:availableLetters][0] == "*"
34
- params[:availableLetters].unshift "All" if (params[:include_all] && !params[:availableLetters].include?("All"))
35
- params[:availableLetters] -= (1..9).to_a.map{|x| x.to_s} if !params[:numbers]
36
- params[:availableLetters] -= ["*"] if !params[:others]
37
-
38
- params[:availableLetters].each do |l|
39
- value = params[:language].output_letter(l)
40
- if l == params[:currentField]
41
- links += '<li class="active"><a href="?letter=' + l + '" data-letter="' + l + '">' + value + '</a></li>'
42
- else
43
- links += '<li><a href="?letter=' + l + '" data-letter="' + l + '">' + value + "</a></li>"
38
+ options[:availableLetters].sort!
39
+ options[:availableLetters] = options[:availableLetters][1..-1] + ["*"] if options[:availableLetters][0] == "*"
40
+ #Ensure that "All" is always at the front of the array
41
+ if options[:include_all]
42
+ options[:availableLetters].delete("All") if options[:availableLetters].include?("All")
43
+ options[:availableLetters].unshift("All")
44
+ end
45
+ options[:availableLetters] -= (1..9).to_a.map{|x| x.to_s} if !options[:numbers]
46
+ options[:availableLetters] -= ["*"] if !options[:others]
47
+
48
+ options[:availableLetters].each do |l|
49
+ link_letter = l
50
+ if options[:slugged_link] && (l =~ options[:language].letters_regexp || l == "All")
51
+ link_letter = options[:language].slugged_letters[l]
44
52
  end
53
+
54
+ url = options[:scope].url_for(:letter => link_letter)
55
+ value = options[:language].output_letter(l)
56
+ links += content_tag(:li, link_to(value, url, "data-letter" => l), :class => ("active" if l == options[:currentField] ))
45
57
  end
46
58
  end
47
59
 
48
-
49
- element = params[:bootstrap3] ? 'ul' : 'div'
50
- if params[:pagination_class] != "none"
51
- pagination = "<#{element} class='pagination %s alpha' style='height:35px;'>" % params[:pagination_class]
60
+ element = options[:bootstrap3] ? 'ul' : 'div'
61
+ if options[:pagination_class] != "none"
62
+ pagination = "<#{element} class='pagination %s alpha' style='height:35px;'>" % options[:pagination_class]
52
63
  else
53
64
  pagination = "<#{element} class='pagination alpha' style='height:35px;'>"
54
65
  end
55
66
  pagination +=
56
- (params[:bootstrap3] ? "" : "<ul>") +
67
+ (options[:bootstrap3] ? "" : "<ul>") +
57
68
  links +
58
- (params[:bootstrap3] ? "" : "</ul>") +
59
- (params[:bootstrap3] ? "</ul>" : "</div>")
69
+ (options[:bootstrap3] ? "" : "</ul>") +
70
+ (options[:bootstrap3] ? "" : "</div>")
60
71
 
61
72
  output += pagination
62
73
  output.html_safe
@@ -13,6 +13,25 @@ class String
13
13
  end
14
14
  end
15
15
 
16
+ class RouterMock
17
+ def url_for(options)
18
+ '?letter='+options[:letter]
19
+ end
20
+ end
21
+
22
+ def main_app
23
+ RouterMock.new()
24
+ end
25
+
26
+ def link_to(value, url, options)
27
+ "<a href='#{url}' data-letter=\"#{options["data-letter"]}\">#{value}</a>"
28
+ end
29
+
30
+ def content_tag(type, el, html_options={})
31
+ "<#{type.to_s} class='#{html_options[:class] || ''}'>#{el}</#{type.to_s}>"
32
+ end
33
+
34
+
16
35
  module AlphabeticalPaginate
17
36
 
18
37
  describe AlphabeticalPaginate do
@@ -3,6 +3,7 @@ require 'alphabetical_paginate'
3
3
 
4
4
  module AlphabeticalPaginate
5
5
  describe Language do
6
+
6
7
  context "English language" do
7
8
  before(:all) do
8
9
  I18n.locale = :en
@@ -0,0 +1,18 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ RSpec.configure do |config|
8
+ config.treat_symbols_as_metadata_keys_with_true_values = true
9
+ config.run_all_when_everything_filtered = true
10
+ config.filter_run :focus
11
+ config.include Rails.application.routes.url_helpers
12
+
13
+ # Run specs in random order to surface order dependencies. If you find an
14
+ # order dependency and want to debug it, you can fix the order by providing
15
+ # the seed, which is printed after each run.
16
+ # --seed 1234
17
+ config.order = 'random'
18
+ end
@@ -1,5 +1,6 @@
1
1
  $(function() {
2
- var once = false;
2
+ // deal with old browsers
3
+ var hasHistory = !!(window.history && window.history.pushState);
3
4
 
4
5
  var img = "<img src='/assets/aloader.gif' class='loading'/>";
5
6
  // RAILS 3.0 USERS -> Please delete the above line and uncomment the bottom line
@@ -12,44 +13,52 @@ $(function() {
12
13
 
13
14
  if (!handlers || -1 !== $.inArray(onNavbarClick, handlers.click)) {
14
15
  $(document).on("click", ".pagination.alpha a", onNavbarClick);
16
+ if(hasHistory){
17
+ // bind the popstate
18
+ bindPopState(location.href);
19
+ }
15
20
  }
16
21
 
17
22
  function onNavbarClick(e) {
18
23
  e.preventDefault();
19
- var url = location.href,
20
- letter = $(this).data("letter");
24
+ var url = location.href,
25
+ letter = $(this).data("letter");
21
26
  if (/letter/.test(url)) {
22
27
  url = url.replace(/letter=[^&]*/, "letter=" + letter);
23
- }
24
- else {
28
+ } else {
25
29
  if (/\?/.test(url)) {
26
30
  url += "&letter=" + letter;
27
- }
28
- else {
31
+ } else {
29
32
  url += "?letter=" + letter;
30
33
  }
31
34
  }
32
- $(".pagination").html(img);
33
- //$.load(url + " #pagination_table");
34
- $.get(url, function(result) {
35
- $(".pagination").html($(".pagination", result).html());
36
- $("#pagination_table").html($("#pagination_table", result).html());
37
- });
38
- history.pushState(null, document.title, url);
35
+ loadPage(url);
36
+ // deal with browser support
37
+ if(hasHistory){
38
+ history.pushState(null, document.title, url);
39
+ }
39
40
  }
40
41
 
41
- // let navigate the browser throught the ajax history
42
- $(window).bind("popstate", function() {
43
- if (once) {
44
- $(".pagination").html(img);
45
- $.get(location.href, function(result) {
46
- $(".pagination").html($(".pagination", result).html());
47
- $("#pagination_table").html($("#pagination_table", result).html());
48
- });
49
- } else {
50
- once = true;
42
+ // let navigate the browser throught the ajax history
43
+ function bindPopState(initialUrl){
44
+ $(window).bind("popstate", function() {
45
+ var newUrl = location.href;
46
+ var diff = newUrl.replace(initialUrl, '');
47
+ // skip initial popstate
48
+ // skip anchor links (used for JS links)
49
+ if (diff !== '' && diff !== '#') {
50
+ loadPage(newUrl);
51
51
  }
52
- });
52
+ });
53
+ }
54
+
55
+ function loadPage(url){
56
+ $(".pagination").html(img);
57
+ $.get(url, function (result) {
58
+ $(".pagination").html($(".pagination", result).html());
59
+ $("#pagination_table").html($("#pagination_table", result).html());
60
+ });
61
+ }
53
62
 
54
63
 
55
64
  });
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: 2.2.3
4
+ version: 2.3.0
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: 2014-07-13 00:00:00.000000000 Z
12
+ date: 2015-05-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -83,6 +83,7 @@ extensions: []
83
83
  extra_rdoc_files: []
84
84
  files:
85
85
  - .gitignore
86
+ - .rspec
86
87
  - Gemfile
87
88
  - LICENSE.txt
88
89
  - README.md
@@ -99,6 +100,7 @@ files:
99
100
  - spec/alpha_example.rb
100
101
  - spec/alphabetical_paginate_spec.rb
101
102
  - spec/language_spec.rb
103
+ - spec/spec_helper.rb
102
104
  - spec/support/helpers.rb
103
105
  - vendor/assets/images/aloader.gif
104
106
  - vendor/assets/javascripts/alphabetical_paginate.js
@@ -124,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
126
  version: '0'
125
127
  requirements: []
126
128
  rubyforge_project:
127
- rubygems_version: 1.8.25
129
+ rubygems_version: 1.8.23
128
130
  signing_key:
129
131
  specification_version: 3
130
132
  summary: Pagination
@@ -132,4 +134,5 @@ test_files:
132
134
  - spec/alpha_example.rb
133
135
  - spec/alphabetical_paginate_spec.rb
134
136
  - spec/language_spec.rb
137
+ - spec/spec_helper.rb
135
138
  - spec/support/helpers.rb