alphabetical_paginate 2.2.3 → 2.3.0

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/.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