kaminari-jets-core 0.2.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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +1 -0
- data/MIT-LICENSE +21 -0
- data/README.md +31 -0
- data/app/views/kaminari/_first_page.html.erb +11 -0
- data/app/views/kaminari/_first_page.html.haml +9 -0
- data/app/views/kaminari/_first_page.html.slim +10 -0
- data/app/views/kaminari/_gap.html.erb +8 -0
- data/app/views/kaminari/_gap.html.haml +8 -0
- data/app/views/kaminari/_gap.html.slim +9 -0
- data/app/views/kaminari/_last_page.html.erb +11 -0
- data/app/views/kaminari/_last_page.html.haml +9 -0
- data/app/views/kaminari/_last_page.html.slim +10 -0
- data/app/views/kaminari/_next_page.html.erb +11 -0
- data/app/views/kaminari/_next_page.html.haml +9 -0
- data/app/views/kaminari/_next_page.html.slim +10 -0
- data/app/views/kaminari/_page.html.erb +12 -0
- data/app/views/kaminari/_page.html.haml +10 -0
- data/app/views/kaminari/_page.html.slim +11 -0
- data/app/views/kaminari/_paginator.html.erb +25 -0
- data/app/views/kaminari/_paginator.html.haml +18 -0
- data/app/views/kaminari/_paginator.html.slim +19 -0
- data/app/views/kaminari/_prev_page.html.erb +11 -0
- data/app/views/kaminari/_prev_page.html.haml +9 -0
- data/app/views/kaminari/_prev_page.html.slim +10 -0
- data/config/locales/kaminari.yml +23 -0
- data/kaminari-core.gemspec +26 -0
- data/lib/generators/kaminari/config_generator.rb +19 -0
- data/lib/generators/kaminari/templates/kaminari_config.rb +14 -0
- data/lib/generators/kaminari/views_generator.rb +137 -0
- data/lib/kaminari/config.rb +40 -0
- data/lib/kaminari/core/version.rb +8 -0
- data/lib/kaminari/core.rb +29 -0
- data/lib/kaminari/engine.rb +6 -0
- data/lib/kaminari/exceptions.rb +5 -0
- data/lib/kaminari/helpers/helper_methods.rb +247 -0
- data/lib/kaminari/helpers/paginator.rb +191 -0
- data/lib/kaminari/helpers/tags.rb +164 -0
- data/lib/kaminari/jets/engine.rb +6 -0
- data/lib/kaminari/jets/turbine.rb +9 -0
- data/lib/kaminari/models/array_extension.rb +73 -0
- data/lib/kaminari/models/configuration_methods.rb +60 -0
- data/lib/kaminari/models/page_scope_methods.rb +91 -0
- data/lib/kaminari/railtie.rb +9 -0
- metadata +115 -0
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/concern'
|
4
|
+
|
5
|
+
module Kaminari
|
6
|
+
module ConfigurationMethods #:nodoc:
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
module ClassMethods #:nodoc:
|
9
|
+
# Overrides the default +per_page+ value per model
|
10
|
+
# class Article < ActiveRecord::Base
|
11
|
+
# paginates_per 10
|
12
|
+
# end
|
13
|
+
def paginates_per(val)
|
14
|
+
@_default_per_page = val
|
15
|
+
end
|
16
|
+
|
17
|
+
# This model's default +per_page+ value
|
18
|
+
# returns +default_per_page+ value unless explicitly overridden via <tt>paginates_per</tt>
|
19
|
+
def default_per_page
|
20
|
+
(defined?(@_default_per_page) && @_default_per_page) || Kaminari.config.default_per_page
|
21
|
+
end
|
22
|
+
|
23
|
+
# Overrides the max +per_page+ value per model
|
24
|
+
# class Article < ActiveRecord::Base
|
25
|
+
# max_paginates_per 100
|
26
|
+
# end
|
27
|
+
def max_paginates_per(val)
|
28
|
+
@_max_per_page = val
|
29
|
+
end
|
30
|
+
|
31
|
+
# This model's max +per_page+ value
|
32
|
+
# returns +max_per_page+ value unless explicitly overridden via <tt>max_paginates_per</tt>
|
33
|
+
def max_per_page
|
34
|
+
(defined?(@_max_per_page) && @_max_per_page) || Kaminari.config.max_per_page
|
35
|
+
end
|
36
|
+
|
37
|
+
# Overrides the max_pages value per model when a value is given
|
38
|
+
# class Article < ActiveRecord::Base
|
39
|
+
# max_pages 100
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# Also returns this model's max_pages value (globally configured
|
43
|
+
# +max_pages+ value unless explicitly overridden) when no value is given
|
44
|
+
def max_pages(val = :none)
|
45
|
+
if val == :none
|
46
|
+
# getter
|
47
|
+
(defined?(@_max_pages) && @_max_pages) || Kaminari.config.max_pages
|
48
|
+
else
|
49
|
+
# setter
|
50
|
+
@_max_pages = val
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def max_pages_per(val)
|
55
|
+
ActiveSupport::Deprecation.warn 'max_pages_per is deprecated. Use max_pages instead.'
|
56
|
+
max_pages val
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Kaminari
|
4
|
+
module PageScopeMethods
|
5
|
+
# Specify the <tt>per_page</tt> value for the preceding <tt>page</tt> scope
|
6
|
+
# Model.page(3).per(10)
|
7
|
+
def per(num, max_per_page: nil)
|
8
|
+
max_per_page ||= ((defined?(@_max_per_page) && @_max_per_page) || self.max_per_page)
|
9
|
+
@_per = (num || default_per_page).to_i
|
10
|
+
if (n = num.to_i) < 0 || !(/^\d/ =~ num.to_s)
|
11
|
+
self
|
12
|
+
elsif n.zero?
|
13
|
+
limit(n)
|
14
|
+
elsif max_per_page && (max_per_page < n)
|
15
|
+
limit(max_per_page).offset(offset_value / limit_value * max_per_page)
|
16
|
+
else
|
17
|
+
limit(n).offset(offset_value / limit_value * n)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def max_paginates_per(new_max_per_page)
|
22
|
+
@_max_per_page = new_max_per_page
|
23
|
+
|
24
|
+
per (defined?(@_per) && @_per) || default_per_page, max_per_page: new_max_per_page
|
25
|
+
end
|
26
|
+
|
27
|
+
def padding(num)
|
28
|
+
num = num.to_i
|
29
|
+
raise ArgumentError, "padding must not be negative" if num < 0
|
30
|
+
@_padding = num
|
31
|
+
offset(offset_value + @_padding)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Total number of pages
|
35
|
+
def total_pages
|
36
|
+
count_without_padding = total_count
|
37
|
+
count_without_padding -= @_padding if defined?(@_padding) && @_padding
|
38
|
+
count_without_padding = 0 if count_without_padding < 0
|
39
|
+
|
40
|
+
total_pages_count = (count_without_padding.to_f / limit_value).ceil
|
41
|
+
max_pages && (max_pages < total_pages_count) ? max_pages : total_pages_count
|
42
|
+
rescue FloatDomainError
|
43
|
+
raise ZeroPerPageOperation, "The number of total pages was incalculable. Perhaps you called .per(0)?"
|
44
|
+
end
|
45
|
+
|
46
|
+
# Current page number
|
47
|
+
def current_page
|
48
|
+
offset_without_padding = offset_value
|
49
|
+
offset_without_padding -= @_padding if defined?(@_padding) && @_padding
|
50
|
+
offset_without_padding = 0 if offset_without_padding < 0
|
51
|
+
|
52
|
+
(offset_without_padding / limit_value) + 1
|
53
|
+
rescue ZeroDivisionError
|
54
|
+
raise ZeroPerPageOperation, "Current page was incalculable. Perhaps you called .per(0)?"
|
55
|
+
end
|
56
|
+
|
57
|
+
# Current per-page number
|
58
|
+
def current_per_page
|
59
|
+
ActiveSupport::Deprecation.warn '#current_per_page is deprecated and will be removed in the next major ' \
|
60
|
+
'version. Please use #limit_value instead.'
|
61
|
+
|
62
|
+
limit_value
|
63
|
+
# (defined?(@_per) && @_per) || default_per_page
|
64
|
+
end
|
65
|
+
|
66
|
+
# Next page number in the collection
|
67
|
+
def next_page
|
68
|
+
current_page + 1 unless last_page? || out_of_range?
|
69
|
+
end
|
70
|
+
|
71
|
+
# Previous page number in the collection
|
72
|
+
def prev_page
|
73
|
+
current_page - 1 unless first_page? || out_of_range?
|
74
|
+
end
|
75
|
+
|
76
|
+
# First page of the collection?
|
77
|
+
def first_page?
|
78
|
+
current_page == 1
|
79
|
+
end
|
80
|
+
|
81
|
+
# Last page of the collection?
|
82
|
+
def last_page?
|
83
|
+
current_page == total_pages
|
84
|
+
end
|
85
|
+
|
86
|
+
# Out of range of the collection?
|
87
|
+
def out_of_range?
|
88
|
+
current_page > total_pages
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kaminari-jets-core
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tung Nguyen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-12-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.13'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.13'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
description: kaminari-core includes pagination logic independent from ORMs and view
|
42
|
+
libraries
|
43
|
+
email:
|
44
|
+
- tongueroo@gmail.com
|
45
|
+
executables: []
|
46
|
+
extensions: []
|
47
|
+
extra_rdoc_files: []
|
48
|
+
files:
|
49
|
+
- CHANGELOG.md
|
50
|
+
- MIT-LICENSE
|
51
|
+
- README.md
|
52
|
+
- app/views/kaminari/_first_page.html.erb
|
53
|
+
- app/views/kaminari/_first_page.html.haml
|
54
|
+
- app/views/kaminari/_first_page.html.slim
|
55
|
+
- app/views/kaminari/_gap.html.erb
|
56
|
+
- app/views/kaminari/_gap.html.haml
|
57
|
+
- app/views/kaminari/_gap.html.slim
|
58
|
+
- app/views/kaminari/_last_page.html.erb
|
59
|
+
- app/views/kaminari/_last_page.html.haml
|
60
|
+
- app/views/kaminari/_last_page.html.slim
|
61
|
+
- app/views/kaminari/_next_page.html.erb
|
62
|
+
- app/views/kaminari/_next_page.html.haml
|
63
|
+
- app/views/kaminari/_next_page.html.slim
|
64
|
+
- app/views/kaminari/_page.html.erb
|
65
|
+
- app/views/kaminari/_page.html.haml
|
66
|
+
- app/views/kaminari/_page.html.slim
|
67
|
+
- app/views/kaminari/_paginator.html.erb
|
68
|
+
- app/views/kaminari/_paginator.html.haml
|
69
|
+
- app/views/kaminari/_paginator.html.slim
|
70
|
+
- app/views/kaminari/_prev_page.html.erb
|
71
|
+
- app/views/kaminari/_prev_page.html.haml
|
72
|
+
- app/views/kaminari/_prev_page.html.slim
|
73
|
+
- config/locales/kaminari.yml
|
74
|
+
- kaminari-core.gemspec
|
75
|
+
- lib/generators/kaminari/config_generator.rb
|
76
|
+
- lib/generators/kaminari/templates/kaminari_config.rb
|
77
|
+
- lib/generators/kaminari/views_generator.rb
|
78
|
+
- lib/kaminari/config.rb
|
79
|
+
- lib/kaminari/core.rb
|
80
|
+
- lib/kaminari/core/version.rb
|
81
|
+
- lib/kaminari/engine.rb
|
82
|
+
- lib/kaminari/exceptions.rb
|
83
|
+
- lib/kaminari/helpers/helper_methods.rb
|
84
|
+
- lib/kaminari/helpers/paginator.rb
|
85
|
+
- lib/kaminari/helpers/tags.rb
|
86
|
+
- lib/kaminari/jets/engine.rb
|
87
|
+
- lib/kaminari/jets/turbine.rb
|
88
|
+
- lib/kaminari/models/array_extension.rb
|
89
|
+
- lib/kaminari/models/configuration_methods.rb
|
90
|
+
- lib/kaminari/models/page_scope_methods.rb
|
91
|
+
- lib/kaminari/railtie.rb
|
92
|
+
homepage: https://github.com/kaminari/kaminari
|
93
|
+
licenses:
|
94
|
+
- MIT
|
95
|
+
metadata: {}
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 2.0.0
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubygems_version: 3.4.20
|
112
|
+
signing_key:
|
113
|
+
specification_version: 4
|
114
|
+
summary: Kaminari's core pagination library
|
115
|
+
test_files: []
|