pagy 4.11.0 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/lib/config/pagy.rb +119 -58
- data/lib/javascripts/pagy-dev.js +114 -0
- data/lib/javascripts/pagy-module.d.ts +5 -0
- data/lib/javascripts/pagy-module.js +113 -0
- data/lib/javascripts/pagy.js +1 -121
- data/lib/locales/de.yml +1 -1
- data/lib/locales/ko.yml +1 -1
- data/lib/locales/nn.yml +22 -0
- data/lib/locales/ta.yml +22 -0
- data/lib/pagy/backend.rb +10 -13
- data/lib/pagy/calendar/day.rb +39 -0
- data/lib/pagy/calendar/helper.rb +61 -0
- data/lib/pagy/calendar/month.rb +40 -0
- data/lib/pagy/calendar/quarter.rb +47 -0
- data/lib/pagy/calendar/week.rb +39 -0
- data/lib/pagy/calendar/year.rb +33 -0
- data/lib/pagy/calendar.rb +100 -0
- data/lib/pagy/console.rb +6 -4
- data/lib/pagy/countless.rb +22 -23
- data/lib/pagy/exceptions.rb +14 -16
- data/lib/pagy/extras/arel.rb +11 -7
- data/lib/pagy/extras/array.rb +9 -9
- data/lib/pagy/extras/bootstrap.rb +45 -38
- data/lib/pagy/extras/bulma.rb +50 -38
- data/lib/pagy/extras/calendar.rb +49 -0
- data/lib/pagy/extras/countless.rb +15 -18
- data/lib/pagy/extras/elasticsearch_rails.rb +67 -48
- data/lib/pagy/extras/foundation.rb +39 -35
- data/lib/pagy/extras/frontend_helpers.rb +72 -0
- data/lib/pagy/extras/gearbox.rb +54 -0
- data/lib/pagy/extras/headers.rb +30 -20
- data/lib/pagy/extras/i18n.rb +15 -13
- data/lib/pagy/extras/items.rb +42 -40
- data/lib/pagy/extras/materialize.rb +40 -38
- data/lib/pagy/extras/meilisearch.rb +53 -44
- data/lib/pagy/extras/metadata.rb +15 -20
- data/lib/pagy/extras/navs.rb +35 -34
- data/lib/pagy/extras/overflow.rb +62 -61
- data/lib/pagy/extras/searchkick.rb +54 -46
- data/lib/pagy/extras/semantic.rb +42 -40
- data/lib/pagy/extras/standalone.rb +50 -46
- data/lib/pagy/extras/support.rb +24 -16
- data/lib/pagy/extras/trim.rb +15 -14
- data/lib/pagy/extras/uikit.rb +41 -38
- data/lib/pagy/frontend.rb +36 -59
- data/lib/pagy/i18n.rb +164 -0
- data/lib/pagy/url_helpers.rb +24 -0
- data/lib/pagy.rb +90 -31
- data/lib/templates/bootstrap_nav.html.erb +2 -2
- data/lib/templates/bootstrap_nav.html.haml +2 -2
- data/lib/templates/bootstrap_nav.html.slim +2 -2
- data/lib/templates/foundation_nav.html.erb +1 -1
- data/lib/templates/foundation_nav.html.haml +1 -1
- data/lib/templates/foundation_nav.html.slim +1 -1
- data/lib/templates/nav.html.erb +1 -1
- data/lib/templates/nav.html.haml +1 -1
- data/lib/templates/nav.html.slim +1 -1
- data/lib/templates/uikit_nav.html.erb +2 -2
- data/lib/templates/uikit_nav.html.haml +1 -1
- data/lib/templates/uikit_nav.html.slim +2 -2
- metadata +29 -13
- data/lib/locales/utils/i18n.rb +0 -17
- data/lib/locales/utils/loader.rb +0 -31
- data/lib/locales/utils/p11n.rb +0 -112
- data/lib/pagy/deprecation.rb +0 -27
- data/lib/pagy/extras/shared.rb +0 -52
data/lib/locales/utils/p11n.rb
DELETED
@@ -1,112 +0,0 @@
|
|
1
|
-
# See https://ddnexus.github.io/pagy/api/frontend#i18n
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
# This file adds support for multiple built-in plualization types.
|
5
|
-
# It defines the pluralization procs and gets eval(ed) and gc-collected at Pagy::I18n.load time.
|
6
|
-
|
7
|
-
# utility variables
|
8
|
-
from0to1 = [0,1].freeze
|
9
|
-
from2to4 = [2,3,4].freeze
|
10
|
-
from5to9 = [5,6,7,8,9].freeze
|
11
|
-
from11to14 = [11,12,13,14].freeze
|
12
|
-
from12to14 = [12,13,14].freeze
|
13
|
-
|
14
|
-
# Pluralization (p11n)
|
15
|
-
# Compliant with the I18n gem
|
16
|
-
# A pluralization proc returns a plural type string based on the passed count
|
17
|
-
# Each proc may apply to one or more locales below.
|
18
|
-
# Pluralization logic adapted from https://github.com/svenfuchs/rails-i18n
|
19
|
-
p11n = {
|
20
|
-
one_other: -> (n){ n == 1 ? 'one' : 'other' }, # default
|
21
|
-
|
22
|
-
arabic: lambda do |n|
|
23
|
-
n ||= 0
|
24
|
-
mod100 = n % 100
|
25
|
-
|
26
|
-
case
|
27
|
-
when n == 0 then 'zero' # rubocop:disable Style/NumericPredicate
|
28
|
-
when n == 1 then 'one'
|
29
|
-
when n == 2 then 'two'
|
30
|
-
when (3..10).to_a.include?(mod100) then 'few'
|
31
|
-
when (11..99).to_a.include?(mod100) then 'many'
|
32
|
-
else 'other'
|
33
|
-
end
|
34
|
-
end,
|
35
|
-
|
36
|
-
east_slavic: lambda do |n|
|
37
|
-
n ||= 0
|
38
|
-
mod10 = n % 10
|
39
|
-
mod100 = n % 100
|
40
|
-
|
41
|
-
case
|
42
|
-
when mod10 == 1 && mod100 != 11 then 'one'
|
43
|
-
when from2to4.include?(mod10) && !from12to14.include?(mod100) then 'few'
|
44
|
-
when mod10 == 0 || from5to9.include?(mod10) || from11to14.include?(mod100) then 'many' # rubocop:disable Style/NumericPredicate
|
45
|
-
else 'other'
|
46
|
-
end
|
47
|
-
end,
|
48
|
-
|
49
|
-
one_two_other: lambda do |n|
|
50
|
-
case n
|
51
|
-
when 1 then 'one'
|
52
|
-
when 2 then 'two'
|
53
|
-
else 'other'
|
54
|
-
end
|
55
|
-
end,
|
56
|
-
|
57
|
-
one_upto_two_other: -> (n){ n && n >= 0 && n < 2 ? 'one' : 'other' },
|
58
|
-
|
59
|
-
other: -> (*){ 'other' },
|
60
|
-
|
61
|
-
polish: lambda do |n|
|
62
|
-
n ||= 0
|
63
|
-
mod10 = n % 10
|
64
|
-
mod100 = n % 100
|
65
|
-
|
66
|
-
case
|
67
|
-
when n == 1 then 'one'
|
68
|
-
when from2to4.include?(mod10) && !from12to14.include?(mod100) then 'few'
|
69
|
-
when (from0to1 + from5to9).include?(mod10) || from12to14.include?(mod100) then 'many'
|
70
|
-
else 'other'
|
71
|
-
end
|
72
|
-
end,
|
73
|
-
|
74
|
-
west_slavic: lambda do |n|
|
75
|
-
case n
|
76
|
-
when 1 then 'one'
|
77
|
-
when 2, 3, 4 then 'few'
|
78
|
-
else 'other'
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
}
|
83
|
-
|
84
|
-
# Hash of locale/pluralization pairs
|
85
|
-
# It contains all the entries for all the locales defined as dictionaries.
|
86
|
-
# The default pluralization for locales not explicitly listed here
|
87
|
-
# is the :one_other pluralization proc (used for English)
|
88
|
-
plurals = Hash.new(p11n[:one_other]).tap do |hash|
|
89
|
-
hash['ar'] = p11n[:arabic]
|
90
|
-
hash['bs'] = p11n[:east_slavic]
|
91
|
-
hash['cs'] = p11n[:west_slavic]
|
92
|
-
hash['id'] = p11n[:other]
|
93
|
-
hash['fr'] = p11n[:one_upto_two_other]
|
94
|
-
hash['hr'] = p11n[:east_slavic]
|
95
|
-
hash['ja'] = p11n[:other]
|
96
|
-
hash['km'] = p11n[:other]
|
97
|
-
hash['ko'] = p11n[:other]
|
98
|
-
hash['pl'] = p11n[:polish]
|
99
|
-
hash['ru'] = p11n[:east_slavic]
|
100
|
-
hash['sr'] = p11n[:east_slavic]
|
101
|
-
hash['sv'] = p11n[:one_two_other]
|
102
|
-
hash['sv-SE'] = p11n[:one_two_other]
|
103
|
-
hash['tr'] = p11n[:other]
|
104
|
-
hash['uk'] = p11n[:east_slavic]
|
105
|
-
hash['zh-CN'] = p11n[:other]
|
106
|
-
hash['zh-HK'] = p11n[:other]
|
107
|
-
hash['zh-TW'] = p11n[:other]
|
108
|
-
end
|
109
|
-
|
110
|
-
[ plurals, p11n ]
|
111
|
-
|
112
|
-
# PR for other locales and pluralizations are very welcome. Thanks!
|
data/lib/pagy/deprecation.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
class Pagy
|
3
|
-
class << self
|
4
|
-
|
5
|
-
# deprecated variables
|
6
|
-
def deprecated_var(var, val, new_var, new_val)
|
7
|
-
value = val || new_val
|
8
|
-
Warning.warn %([PAGY WARNING] deprecated use of '#{var}' var will not be supported in 5.0! Use '#{new_var}: #{value.inspect}' instead.)
|
9
|
-
value
|
10
|
-
end
|
11
|
-
|
12
|
-
# deprecated pagy_url_for argument order
|
13
|
-
def deprecated_order(pagy, page)
|
14
|
-
Warning.warn %([PAGY WARNING] inverted use of pagy/page in pagy_url_for will not be supported in 5.0! Use pagy_url_for(pagy, page) instead.)
|
15
|
-
[page, pagy]
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
|
-
# deprecated posiitioal arguments
|
20
|
-
def deprecated_arg(arg, val, new_key, new_val)
|
21
|
-
value = val || new_val # we use the new_val if present
|
22
|
-
Warning.warn %([PAGY WARNING] deprecated use of positional '#{arg}' arg will not be supported in 5.0! Use only the keyword arg '#{new_key}: #{value.inspect}' instead.)
|
23
|
-
value
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
data/lib/pagy/extras/shared.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'digest'
|
4
|
-
|
5
|
-
class Pagy
|
6
|
-
|
7
|
-
# default :steps: false will use {0 => @vars[:size]}
|
8
|
-
VARS[:steps] = false
|
9
|
-
|
10
|
-
# `Pagy` instance method used by the `pagy*_nav_js` helpers.
|
11
|
-
# It returns the sequels of width/series generated from the :steps hash
|
12
|
-
# Example:
|
13
|
-
# >> pagy = Pagy.new(count:1000, page: 20, steps: {0 => [1,2,2,1], 350 => [2,3,3,2], 550 => [3,4,4,3]})
|
14
|
-
# >> pagy.sequels
|
15
|
-
# #=> { "0" => [1, :gap, 18, 19, "20", 21, 22, :gap, 50],
|
16
|
-
# "350" => [1, 2, :gap, 17, 18, 19, "20", 21, 22, 23, :gap, 49, 50],
|
17
|
-
# "550" => [1, 2, 3, :gap, 16, 17, 18, 19, "20", 21, 22, 23, 24, :gap, 48, 49, 50] }
|
18
|
-
# Notice: if :steps is false it will use the single {0 => @vars[:size]} size
|
19
|
-
def sequels(steps=nil)
|
20
|
-
steps ||= @vars[:steps] || {0 => @vars[:size]}
|
21
|
-
raise VariableError.new(self), "expected :steps to define the 0 width; got #{steps.inspect}" \
|
22
|
-
unless steps.key?(0)
|
23
|
-
{}.tap do |sequels|
|
24
|
-
steps.each {|width, size| sequels[width.to_s] = series(size)}
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
module Frontend
|
29
|
-
|
30
|
-
if defined?(Oj)
|
31
|
-
# it returns a script tag with the JSON-serialized args generated with the faster oj gem
|
32
|
-
def pagy_json_attr(pagy, *args)
|
33
|
-
args << pagy.vars[:page_param] if pagy.vars[:enable_trim_extra]
|
34
|
-
%(data-pagy-json="#{Oj.dump(args, mode: :strict).gsub('"', '"')}")
|
35
|
-
end
|
36
|
-
else
|
37
|
-
require 'json'
|
38
|
-
# it returns a script tag with the JSON-serialized args generated with the slower to_json
|
39
|
-
def pagy_json_attr(pagy, *args)
|
40
|
-
args << pagy.vars[:page_param] if pagy.vars[:enable_trim_extra]
|
41
|
-
%(data-pagy-json="#{args.to_json.gsub('"', '"')}")
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# it returns the marked link to used by pagy.js
|
46
|
-
def pagy_marked_link(link)
|
47
|
-
link.call PAGE_PLACEHOLDER, '', 'style="display: none;"'
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|