kaminari 0.17.0 → 1.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of kaminari might be problematic. Click here for more details.

Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/.travis.yml +20 -39
  4. data/CHANGELOG.md +560 -0
  5. data/CONTRIBUTING.md +16 -0
  6. data/Gemfile +1 -0
  7. data/README.md +545 -0
  8. data/Rakefile +21 -24
  9. data/gemfiles/active_record_41.gemfile +2 -4
  10. data/gemfiles/active_record_42.gemfile +2 -4
  11. data/gemfiles/active_record_50.gemfile +20 -0
  12. data/gemfiles/active_record_edge.gemfile +5 -6
  13. data/kaminari.gemspec +11 -17
  14. data/lib/kaminari.rb +4 -39
  15. data/lib/kaminari/version.rb +2 -1
  16. metadata +44 -186
  17. data/.gemtest +0 -0
  18. data/.rspec +0 -2
  19. data/CHANGELOG.rdoc +0 -480
  20. data/README.rdoc +0 -336
  21. data/app/views/kaminari/_first_page.html.erb +0 -11
  22. data/app/views/kaminari/_first_page.html.haml +0 -9
  23. data/app/views/kaminari/_first_page.html.slim +0 -10
  24. data/app/views/kaminari/_gap.html.erb +0 -8
  25. data/app/views/kaminari/_gap.html.haml +0 -8
  26. data/app/views/kaminari/_gap.html.slim +0 -9
  27. data/app/views/kaminari/_last_page.html.erb +0 -11
  28. data/app/views/kaminari/_last_page.html.haml +0 -9
  29. data/app/views/kaminari/_last_page.html.slim +0 -10
  30. data/app/views/kaminari/_next_page.html.erb +0 -11
  31. data/app/views/kaminari/_next_page.html.haml +0 -9
  32. data/app/views/kaminari/_next_page.html.slim +0 -10
  33. data/app/views/kaminari/_page.html.erb +0 -12
  34. data/app/views/kaminari/_page.html.haml +0 -10
  35. data/app/views/kaminari/_page.html.slim +0 -11
  36. data/app/views/kaminari/_paginator.html.erb +0 -23
  37. data/app/views/kaminari/_paginator.html.haml +0 -18
  38. data/app/views/kaminari/_paginator.html.slim +0 -19
  39. data/app/views/kaminari/_prev_page.html.erb +0 -11
  40. data/app/views/kaminari/_prev_page.html.haml +0 -9
  41. data/app/views/kaminari/_prev_page.html.slim +0 -10
  42. data/config/locales/kaminari.yml +0 -19
  43. data/gemfiles/active_record_30.gemfile +0 -28
  44. data/gemfiles/active_record_31.gemfile +0 -26
  45. data/gemfiles/active_record_32.gemfile +0 -25
  46. data/gemfiles/active_record_40.gemfile +0 -26
  47. data/gemfiles/data_mapper_12.gemfile +0 -32
  48. data/gemfiles/mongo_mapper.gemfile +0 -25
  49. data/gemfiles/mongoid_30.gemfile +0 -22
  50. data/gemfiles/mongoid_31.gemfile +0 -21
  51. data/gemfiles/mongoid_40.gemfile +0 -19
  52. data/gemfiles/mongoid_50.gemfile +0 -23
  53. data/gemfiles/sinatra_13.gemfile +0 -36
  54. data/gemfiles/sinatra_14.gemfile +0 -33
  55. data/lib/generators/kaminari/config_generator.rb +0 -16
  56. data/lib/generators/kaminari/templates/kaminari_config.rb +0 -10
  57. data/lib/generators/kaminari/views_generator.rb +0 -119
  58. data/lib/kaminari/config.rb +0 -51
  59. data/lib/kaminari/engine.rb +0 -4
  60. data/lib/kaminari/grape.rb +0 -4
  61. data/lib/kaminari/helpers/action_view_extension.rb +0 -132
  62. data/lib/kaminari/helpers/paginator.rb +0 -195
  63. data/lib/kaminari/helpers/sinatra_helpers.rb +0 -176
  64. data/lib/kaminari/helpers/tags.rb +0 -108
  65. data/lib/kaminari/hooks.rb +0 -53
  66. data/lib/kaminari/models/active_record_extension.rb +0 -22
  67. data/lib/kaminari/models/active_record_model_extension.rb +0 -22
  68. data/lib/kaminari/models/active_record_relation_methods.rb +0 -42
  69. data/lib/kaminari/models/array_extension.rb +0 -66
  70. data/lib/kaminari/models/configuration_methods.rb +0 -48
  71. data/lib/kaminari/models/data_mapper_collection_methods.rb +0 -19
  72. data/lib/kaminari/models/data_mapper_extension.rb +0 -51
  73. data/lib/kaminari/models/mongo_mapper_extension.rb +0 -18
  74. data/lib/kaminari/models/mongoid_criteria_methods.rb +0 -40
  75. data/lib/kaminari/models/mongoid_extension.rb +0 -26
  76. data/lib/kaminari/models/page_scope_methods.rb +0 -73
  77. data/lib/kaminari/models/plucky_criteria_methods.rb +0 -23
  78. data/lib/kaminari/railtie.rb +0 -7
  79. data/lib/kaminari/sinatra.rb +0 -7
  80. data/spec/config/config_spec.rb +0 -91
  81. data/spec/fake_app/active_record/config.rb +0 -3
  82. data/spec/fake_app/active_record/models.rb +0 -65
  83. data/spec/fake_app/data_mapper/config.rb +0 -1
  84. data/spec/fake_app/data_mapper/models.rb +0 -27
  85. data/spec/fake_app/mongo_mapper/config.rb +0 -2
  86. data/spec/fake_app/mongo_mapper/models.rb +0 -9
  87. data/spec/fake_app/mongoid/config.rb +0 -20
  88. data/spec/fake_app/mongoid/models.rb +0 -38
  89. data/spec/fake_app/rails_app.rb +0 -56
  90. data/spec/fake_app/sinatra_app.rb +0 -22
  91. data/spec/fake_app/views/alternative/kaminari/_first_page.html.erb +0 -1
  92. data/spec/fake_app/views/alternative/kaminari/_paginator.html.erb +0 -3
  93. data/spec/fake_app/views/kaminari/bootstrap/_page.html.erb +0 -1
  94. data/spec/fake_app/views/kaminari/bootstrap/_paginator.html.erb +0 -7
  95. data/spec/fake_gem.rb +0 -20
  96. data/spec/generators/views_generator_spec.rb +0 -18
  97. data/spec/helpers/action_view_extension_spec.rb +0 -318
  98. data/spec/helpers/helpers_spec.rb +0 -144
  99. data/spec/helpers/sinatra_helpers_spec.rb +0 -223
  100. data/spec/helpers/tags_spec.rb +0 -140
  101. data/spec/models/active_record/active_record_relation_methods_spec.rb +0 -77
  102. data/spec/models/active_record/inherited_spec.rb +0 -9
  103. data/spec/models/active_record/scopes_spec.rb +0 -265
  104. data/spec/models/array_spec.rb +0 -172
  105. data/spec/models/configuration_methods_spec.rb +0 -125
  106. data/spec/models/data_mapper/data_mapper_spec.rb +0 -205
  107. data/spec/models/mongo_mapper/mongo_mapper_spec.rb +0 -84
  108. data/spec/models/mongoid/mongoid_spec.rb +0 -228
  109. data/spec/requests/users_spec.rb +0 -53
  110. data/spec/spec_helper.rb +0 -34
  111. data/spec/spec_helper_for_sinatra.rb +0 -34
  112. data/spec/support/database_cleaner.rb +0 -19
  113. data/spec/support/matchers.rb +0 -52
@@ -1,48 +0,0 @@
1
- module Kaminari
2
- module ConfigurationMethods
3
- extend ActiveSupport::Concern
4
- module ClassMethods
5
- # Overrides the default +per_page+ value per model
6
- # class Article < ActiveRecord::Base
7
- # paginates_per 10
8
- # end
9
- def paginates_per(val)
10
- @_default_per_page = val
11
- end
12
-
13
- # This model's default +per_page+ value
14
- # returns +default_per_page+ value unless explicitly overridden via <tt>paginates_per</tt>
15
- def default_per_page
16
- (defined?(@_default_per_page) && @_default_per_page) || Kaminari.config.default_per_page
17
- end
18
-
19
- # Overrides the max +per_page+ value per model
20
- # class Article < ActiveRecord::Base
21
- # max_paginates_per 100
22
- # end
23
- def max_paginates_per(val)
24
- @_max_per_page = val
25
- end
26
-
27
- # This model's max +per_page+ value
28
- # returns +max_per_page+ value unless explicitly overridden via <tt>max_paginates_per</tt>
29
- def max_per_page
30
- (defined?(@_max_per_page) && @_max_per_page) || Kaminari.config.max_per_page
31
- end
32
-
33
- # Overrides the max_pages value per model
34
- # class Article < ActiveRecord::Base
35
- # max_pages_per 100
36
- # end
37
- def max_pages_per(val)
38
- @_max_pages = val
39
- end
40
-
41
- # This model's max_pages value
42
- # returns max_pages value unless explicitly overridden via <tt>max_pages_per</tt>
43
- def max_pages
44
- (defined?(@_max_pages) && @_max_pages) || Kaminari.config.max_pages
45
- end
46
- end
47
- end
48
- end
@@ -1,19 +0,0 @@
1
- module Kaminari
2
- module DataMapperCollectionMethods
3
- def entry_name
4
- model.model_name.human.downcase
5
- end
6
-
7
- def limit_value #:nodoc:
8
- query.options[:limit] || 0
9
- end
10
-
11
- def offset_value #:nodoc:
12
- query.options[:offset] || 0
13
- end
14
-
15
- def total_count #:nodoc:
16
- model.count(query.options.except(:limit, :offset, :order))
17
- end
18
- end
19
- end
@@ -1,51 +0,0 @@
1
- require 'kaminari/models/data_mapper_collection_methods'
2
-
3
- module Kaminari
4
- module DataMapperExtension
5
- module Paginatable
6
- class_eval <<-RUBY, __FILE__, __LINE__ + 1
7
- def #{Kaminari.config.page_method_name}(num = 1)
8
- model = self
9
- model = self.model if self.is_a? DataMapper::Collection
10
- num = [num.to_i, 1].max - 1
11
- all(:limit => model.default_per_page, :offset => model.default_per_page * num).extend Paginating
12
- end
13
- RUBY
14
- end
15
-
16
- module Paginating
17
- include Kaminari::PageScopeMethods
18
-
19
- def all(options={})
20
- super.extend Paginating
21
- end
22
-
23
- def per(num)
24
- super.extend Paginating
25
- end
26
- end
27
-
28
- module Collection
29
- extend ActiveSupport::Concern
30
- included do
31
- include Kaminari::DataMapperCollectionMethods
32
- include Paginatable
33
-
34
- delegate :default_per_page, :max_per_page, :max_pages, :to => :model
35
- end
36
- end
37
-
38
- module Model
39
- include Kaminari::ConfigurationMethods::ClassMethods
40
- include Paginatable
41
-
42
- def limit(val)
43
- all(:limit => val)
44
- end
45
-
46
- def offset(val)
47
- all(:offset => val)
48
- end
49
- end
50
- end
51
- end
@@ -1,18 +0,0 @@
1
- require 'kaminari/models/plucky_criteria_methods'
2
-
3
- module Kaminari
4
- module MongoMapperExtension
5
- module Document
6
- extend ActiveSupport::Concern
7
- include Kaminari::ConfigurationMethods
8
-
9
- included do
10
- # Fetch the values at the specified page number
11
- # Model.page(5)
12
- scope Kaminari.config.page_method_name, Proc.new {|num|
13
- limit(default_per_page).offset(default_per_page * ([num.to_i, 1].max - 1))
14
- }
15
- end
16
- end
17
- end
18
- end
@@ -1,40 +0,0 @@
1
- module Kaminari
2
- module MongoidCriteriaMethods
3
- def initialize_copy(other) #:nodoc:
4
- @total_count = nil
5
- super
6
- end
7
-
8
- def entry_name
9
- model_name.human.downcase
10
- end
11
-
12
- def limit_value #:nodoc:
13
- options[:limit]
14
- end
15
-
16
- def offset_value #:nodoc:
17
- options[:skip]
18
- end
19
-
20
- def total_count #:nodoc:
21
- @total_count ||= if embedded?
22
- unpage.count
23
- else
24
- if options[:max_scan] && options[:max_scan] < count
25
- options[:max_scan]
26
- else
27
- count
28
- end
29
- end
30
- end
31
-
32
- private
33
- def unpage
34
- clone.tap do |crit|
35
- crit.options.delete :limit
36
- crit.options.delete :skip
37
- end
38
- end
39
- end
40
- end
@@ -1,26 +0,0 @@
1
- require 'kaminari/models/mongoid_criteria_methods'
2
-
3
- module Kaminari
4
- module MongoidExtension
5
- module Document
6
- extend ActiveSupport::Concern
7
- include Kaminari::ConfigurationMethods
8
-
9
- included do
10
- scope Kaminari.config.page_method_name, Proc.new {|num|
11
- limit(default_per_page).offset(default_per_page * ((num = num.to_i - 1) < 0 ? 0 : num))
12
- } do
13
- include Kaminari::MongoidCriteriaMethods
14
- include Kaminari::PageScopeMethods
15
- end
16
- end
17
-
18
- module ClassMethods
19
- def inherited(kls)
20
- super
21
- kls.send(:include, Kaminari::MongoidExtension::Document.dup)
22
- end
23
- end if Mongoid::VERSION < '5.0.0'
24
- end
25
- end
26
- end
@@ -1,73 +0,0 @@
1
- module Kaminari
2
- module PageScopeMethods
3
- # Specify the <tt>per_page</tt> value for the preceding <tt>page</tt> scope
4
- # Model.page(3).per(10)
5
- def per(num)
6
- if (n = num.to_i) <= 0
7
- self
8
- elsif max_per_page && max_per_page < n
9
- limit(max_per_page).offset(offset_value / limit_value * max_per_page)
10
- else
11
- limit(n).offset(offset_value / limit_value * n)
12
- end
13
- end
14
-
15
- def padding(num)
16
- @_padding = num
17
- offset(offset_value + num.to_i)
18
- end
19
-
20
- # Total number of pages
21
- def total_pages
22
- count_without_padding = total_count
23
- count_without_padding -= @_padding if defined?(@_padding) && @_padding
24
- count_without_padding = 0 if count_without_padding < 0
25
-
26
- total_pages_count = (count_without_padding.to_f / limit_value).ceil
27
- if max_pages.present? && max_pages < total_pages_count
28
- max_pages
29
- else
30
- total_pages_count
31
- end
32
- end
33
-
34
- def num_pages
35
- ActiveSupport::Deprecation.warn 'num_pages is deprecated and will be removed in Kaminari 1.0. Please use total_pages instead.'
36
- total_pages
37
- end
38
-
39
- # Current page number
40
- def current_page
41
- offset_without_padding = offset_value
42
- offset_without_padding -= @_padding if defined?(@_padding) && @_padding
43
- offset_without_padding = 0 if offset_without_padding < 0
44
-
45
- (offset_without_padding / limit_value) + 1
46
- end
47
-
48
- # Next page number in the collection
49
- def next_page
50
- current_page + 1 unless last_page?
51
- end
52
-
53
- # Previous page number in the collection
54
- def prev_page
55
- current_page - 1 unless first_page?
56
- end
57
-
58
- # First page of the collection?
59
- def first_page?
60
- current_page == 1
61
- end
62
-
63
- # Last page of the collection?
64
- def last_page?
65
- current_page >= total_pages
66
- end
67
-
68
- # Out of range of the collection?
69
- def out_of_range?
70
- current_page > total_pages
71
- end
72
- end
73
- end
@@ -1,23 +0,0 @@
1
- module Kaminari
2
- module PluckyCriteriaMethods
3
- include Kaminari::PageScopeMethods
4
-
5
- delegate :default_per_page, :max_per_page, :max_pages, :to => :model
6
-
7
- def entry_name
8
- model.model_name.human.downcase
9
- end
10
-
11
- def limit_value #:nodoc:
12
- options[:limit]
13
- end
14
-
15
- def offset_value #:nodoc:
16
- options[:skip]
17
- end
18
-
19
- def total_count #:nodoc:
20
- count
21
- end
22
- end
23
- end
@@ -1,7 +0,0 @@
1
- module Kaminari
2
- class Railtie < ::Rails::Railtie #:nodoc:
3
- initializer 'kaminari' do
4
- Kaminari::Hooks.init
5
- end
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- require 'sinatra/base'
2
- require 'kaminari'
3
- require 'kaminari/helpers/sinatra_helpers'
4
-
5
- ActiveSupport::Deprecation.warn 'Kaminari Sinatra support has been extracted to a separate gem, and will be removed in the next 1.0 release. Please bundle kaminari-sinatra gem.'
6
-
7
- Kaminari::Hooks.init
@@ -1,91 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Kaminari::Configuration do
4
- subject { Kaminari.config }
5
- describe 'default_per_page' do
6
- context 'by default' do
7
- its(:default_per_page) { should == 25 }
8
- end
9
- context 'configured via config block' do
10
- before do
11
- Kaminari.configure {|c| c.default_per_page = 17}
12
- end
13
- its(:default_per_page) { should == 17 }
14
- after do
15
- Kaminari.configure {|c| c.default_per_page = 25}
16
- end
17
- end
18
- end
19
-
20
- describe 'max_per_page' do
21
- context 'by default' do
22
- its(:max_per_page) { should == nil }
23
- end
24
- context 'configure via config block' do
25
- before do
26
- Kaminari.configure {|c| c.max_per_page = 100}
27
- end
28
- its(:max_per_page) { should == 100 }
29
- after do
30
- Kaminari.configure {|c| c.max_per_page = nil}
31
- end
32
- end
33
- end
34
-
35
- describe 'window' do
36
- context 'by default' do
37
- its(:window) { should == 4 }
38
- end
39
- end
40
-
41
- describe 'outer_window' do
42
- context 'by default' do
43
- its(:outer_window) { should == 0 }
44
- end
45
- end
46
-
47
- describe 'left' do
48
- context 'by default' do
49
- its(:left) { should == 0 }
50
- end
51
- end
52
-
53
- describe 'right' do
54
- context 'by default' do
55
- its(:right) { should == 0 }
56
- end
57
- end
58
-
59
- describe 'param_name' do
60
- context 'by default' do
61
- its(:param_name) { should == :page }
62
- end
63
-
64
- context 'configured via config block' do
65
- before do
66
- Kaminari.configure {|c| c.param_name = lambda { :test } }
67
- end
68
-
69
- its(:param_name) { should == :test }
70
-
71
- after do
72
- Kaminari.configure {|c| c.param_name = :page }
73
- end
74
- end
75
- end
76
-
77
- describe 'max_pages' do
78
- context 'by default' do
79
- its(:max_pages) { should == nil }
80
- end
81
- context 'configure via config block' do
82
- before do
83
- Kaminari.configure {|c| c.max_pages = 5}
84
- end
85
- its(:max_pages) { should == 5 }
86
- after do
87
- Kaminari.configure {|c| c.max_pages = nil}
88
- end
89
- end
90
- end
91
- end
@@ -1,3 +0,0 @@
1
- # database
2
- ActiveRecord::Base.configurations = {'test' => {:adapter => 'sqlite3', :database => ':memory:'}}
3
- ActiveRecord::Base.establish_connection :test
@@ -1,65 +0,0 @@
1
- # models
2
- class User < ActiveRecord::Base
3
- has_many :authorships
4
- has_many :readerships
5
- has_many :books_authored, :through => :authorships, :source => :book
6
- has_many :books_read, :through => :readerships, :source => :book
7
- has_many :addresses, :class_name => 'User::Address'
8
-
9
- def readers
10
- User.joins(:books_read => :authors).where(:authors_books => {:id => self})
11
- end
12
-
13
- scope :by_name, lambda { order(:name) }
14
- scope :by_read_count, lambda {
15
- cols = if connection.adapter_name == "PostgreSQL"
16
- column_names.map { |column| %{"users"."#{column}"} }.join(", ")
17
- else
18
- '"users"."id"'
19
- end
20
- group(cols).select("count(readerships.id) AS read_count, #{cols}").order('read_count DESC')
21
- }
22
- end
23
- class Authorship < ActiveRecord::Base
24
- belongs_to :user
25
- belongs_to :book
26
- end
27
- class Readership < ActiveRecord::Base
28
- belongs_to :user
29
- belongs_to :book
30
- end
31
- class Book < ActiveRecord::Base
32
- has_many :authorships
33
- has_many :readerships
34
- has_many :authors, :through => :authorships, :source => :user
35
- has_many :readers, :through => :readerships, :source => :user
36
- end
37
- # a model that is a descendant of AR::Base but doesn't directly inherit AR::Base
38
- class Admin < User
39
- end
40
- # a model with namespace
41
- class User::Address < ActiveRecord::Base
42
- belongs_to :user
43
- end
44
-
45
- # a class that uses abstract class
46
- class Product < ActiveRecord::Base
47
- self.abstract_class = true
48
- end
49
- class Device < Product
50
- end
51
-
52
- #migrations
53
- class CreateAllTables < ActiveRecord::Migration
54
- def self.up
55
- create_table(:gem_defined_models) { |t| t.string :name; t.integer :age }
56
- create_table(:users) {|t| t.string :name; t.integer :age}
57
- create_table(:books) {|t| t.string :title}
58
- create_table(:readerships) {|t| t.integer :user_id; t.integer :book_id }
59
- create_table(:authorships) {|t| t.integer :user_id; t.integer :book_id }
60
- create_table(:user_addresses) {|t| t.string :street; t.integer :user_id }
61
- create_table(:devices) {|t| t.string :name; t.integer :age}
62
- end
63
- end
64
- ActiveRecord::Migration.verbose = false
65
- CreateAllTables.up