pagy 4.0.0 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,4 @@
1
1
  # See the Pagy documentation: https://ddnexus.github.io/pagy/extras/support
2
- # encoding: utf-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  class Pagy
@@ -7,29 +6,39 @@ class Pagy
7
6
  module Frontend
8
7
 
9
8
  def pagy_prev_url(pagy)
10
- pagy_url_for(pagy.prev, pagy) if pagy.prev
9
+ pagy_url_for(pagy, pagy.prev) if pagy.prev
11
10
  end
12
11
 
13
12
  def pagy_next_url(pagy)
14
- pagy_url_for(pagy.next, pagy) if pagy.next
13
+ pagy_url_for(pagy, pagy.next) if pagy.next
15
14
  end
16
15
 
17
- def pagy_prev_link(pagy, text = pagy_t('pagy.nav.prev'), link_extra = '')
18
- pagy.prev ? %(<span class="page prev"><a href="#{pagy_url_for(pagy.prev, pagy)}" rel="prev" aria-label="previous" #{pagy.vars[:link_extra]} #{link_extra}>#{text}</a></span>)
19
- : %(<span class="page prev disabled">#{text}</span>)
16
+ def pagy_prev_link(pagy, deprecated_text=nil, deprecated_link_extra=nil, text: pagy_t('pagy.nav.prev'), link_extra: '')
17
+ text = Pagy.deprecated_arg(:text, deprecated_text, :text, text) if deprecated_text
18
+ link_extra = Pagy.deprecated_arg(:link_extra, deprecated_link_extra, :link_extra, link_extra) if deprecated_link_extra
19
+ if pagy.prev
20
+ %(<span class="page prev"><a href="#{pagy_url_for(pagy, pagy.prev)}" rel="prev" aria-label="previous" #{pagy.vars[:link_extra]} #{link_extra}>#{text}</a></span>)
21
+ else
22
+ %(<span class="page prev disabled">#{text}</span>)
23
+ end
20
24
  end
21
25
 
22
- def pagy_next_link(pagy, text = pagy_t('pagy.nav.next'), link_extra = '')
23
- pagy.next ? %(<span class="page next"><a href="#{pagy_url_for(pagy.next, pagy)}" rel="next" aria-label="next" #{pagy.vars[:link_extra]} #{link_extra}>#{text}</a></span>)
24
- : %(<span class="page next disabled">#{text}</span>)
26
+ def pagy_next_link(pagy, deprecated_text=nil, deprecated_link_extra=nil, text: pagy_t('pagy.nav.next'), link_extra: '')
27
+ text = Pagy.deprecated_arg(:text, deprecated_text, :text, text) if deprecated_text
28
+ link_extra = Pagy.deprecated_arg(:link_extra, deprecated_link_extra, :link_extra, link_extra) if deprecated_link_extra
29
+ if pagy.next
30
+ %(<span class="page next"><a href="#{pagy_url_for(pagy, pagy.next)}" rel="next" aria-label="next" #{pagy.vars[:link_extra]} #{link_extra}>#{text}</a></span>)
31
+ else
32
+ %(<span class="page next disabled">#{text}</span>)
33
+ end
25
34
  end
26
35
 
27
36
  def pagy_prev_link_tag(pagy)
28
- %(<link href="#{pagy_url_for(pagy.prev, pagy)}" rel="prev"/>) if pagy.prev
37
+ %(<link href="#{pagy_url_for(pagy, pagy.prev)}" rel="prev"/>) if pagy.prev
29
38
  end
30
39
 
31
40
  def pagy_next_link_tag(pagy)
32
- %(<link href="#{pagy_url_for(pagy.next, pagy)}" rel="next"/>) if pagy.next
41
+ %(<link href="#{pagy_url_for(pagy, pagy.next)}" rel="next"/>) if pagy.next
33
42
  end
34
43
 
35
44
  end
@@ -1,19 +1,24 @@
1
1
  # See the Pagy documentation: https://ddnexus.github.io/pagy/extras/trim
2
- # encoding: utf-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  class Pagy
6
5
 
7
- module Trim
8
- def pagy_link_proc(pagy, link_extra='')
9
- link_proc = super(pagy, link_extra)
10
- re = /[?&]#{pagy.vars[:page_param]}=1\b(?!&)|\b#{pagy.vars[:page_param]}=1&/
11
- lambda do |n, text=n, extra=''|
12
- link = link_proc.call(n, text, extra)
13
- n == 1 ? link.sub(re, '') : link
6
+ VARS[:enable_trim_extra] = true
7
+
8
+ module UseTrimExtra
9
+
10
+ def pagy_link_proc(pagy, deprecated_link_extra=nil, link_extra: '')
11
+ link_extra = Pagy.deprecated_arg(:link_extra, deprecated_link_extra, :link_extra, link_extra) if deprecated_link_extra
12
+ link_proc = super(pagy, link_extra: link_extra)
13
+ return link_proc unless pagy.vars[:enable_trim_extra]
14
+ lambda do |num, text=num, extra=''|
15
+ link = link_proc.call(num, text, extra)
16
+ return link unless num == 1
17
+ link.sub!(/[?&]#{pagy.vars[:page_param]}=1\b(?!&)|\b#{pagy.vars[:page_param]}=1&/, '')
14
18
  end
15
19
  end
20
+
16
21
  end
17
- Frontend.prepend Trim
22
+ Frontend.prepend UseTrimExtra
18
23
 
19
24
  end
@@ -1,5 +1,4 @@
1
1
  # See the Pagy documentation: https://ddnexus.github.io/pagy/extras/uikit
2
- # encoding: utf-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  require 'pagy/extras/shared'
@@ -8,55 +7,86 @@ class Pagy
8
7
  module Frontend
9
8
 
10
9
  # Pagination for uikit: it returns the html with the series of links to the pages
11
- def pagy_uikit_nav(pagy)
12
- link, p_prev, p_next = pagy_link_proc(pagy), pagy.prev, pagy.next
10
+ def pagy_uikit_nav(pagy, pagy_id: nil, link_extra: '')
11
+ p_id = %( id="#{pagy_id}") if pagy_id
12
+ link = pagy_link_proc(pagy, link_extra: link_extra)
13
13
 
14
- previous_span = "<span uk-pagination-previous>#{pagy_t('pagy.nav.prev')}</span>"
15
- html = (p_prev ? %(<li>#{link.call p_prev, previous_span}</li>)
16
- : %(<li class="uk-disabled"><a href="#">#{previous_span}</a></li>))
14
+ html = %(<ul#{p_id} class="pagy-uikit-nav uk-pagination uk-flex-center">#{pagy_uikit_prev_html pagy, link})
17
15
  pagy.series.each do |item|
18
- html << if item.is_a?(Integer); %(<li>#{link.call item}</li>)
19
- elsif item.is_a?(String) ; %(<li class="uk-active"><span>#{item}</span></li>)
20
- elsif item == :gap ; %(<li class="uk-disabled"><span>#{pagy_t('pagy.nav.gap')}</span></li>)
16
+ html << case item
17
+ when Integer then %(<li>#{link.call item}</li>)
18
+ when String then %(<li class="uk-active"><span>#{item}</span></li>)
19
+ when :gap then %(<li class="uk-disabled"><span>#{pagy_t 'pagy.nav.gap'}</span></li>)
21
20
  end
22
21
  end
23
- next_span = "<span uk-pagination-next>#{pagy_t('pagy.nav.next')}</span>"
24
- html << (p_next ? %(<li>#{link.call p_next, next_span}</li>)
25
- : %(<li class="uk-disabled"><a href="#">#{next_span}</a></li>))
26
- %(<ul class="pagy-uikit-nav uk-pagination uk-flex-center">#{html}</ul>)
22
+ html << pagy_uikit_next_html(pagy, link)
23
+ html << %(</ul>)
27
24
  end
28
25
 
29
26
  # Javascript pagination for uikit: it returns a nav and a JSON tag used by the Pagy.nav javascript
30
- def pagy_uikit_nav_js(pagy, id=pagy_id)
31
- link, p_prev, p_next = pagy_link_proc(pagy), pagy.prev, pagy.next
32
- previous_span = "<span uk-pagination-previous>#{pagy_t('pagy.nav.prev')}</span>"
33
- next_span = "<span uk-pagination-next>#{pagy_t('pagy.nav.next')}</span>"
34
- tags = { 'before' => p_prev ? %(<li>#{link.call p_prev, previous_span}</li>)
35
- : %(<li class="uk-disabled"><a href="#">#{previous_span}</a></li>),
27
+ def pagy_uikit_nav_js(pagy, deprecated_id=nil, pagy_id: nil, link_extra: '', steps: nil)
28
+ pagy_id = Pagy.deprecated_arg(:id, deprecated_id, :pagy_id, pagy_id) if deprecated_id
29
+ p_id = %( id="#{pagy_id}") if pagy_id
30
+ link = pagy_link_proc(pagy, link_extra: link_extra)
31
+ tags = { 'before' => pagy_uikit_prev_html(pagy, link),
36
32
  'link' => %(<li>#{link.call(PAGE_PLACEHOLDER)}</li>),
37
33
  'active' => %(<li class="uk-active"><span>#{PAGE_PLACEHOLDER}</span></li>),
38
- 'gap' => %(<li class="uk-disabled"><span>#{pagy_t('pagy.nav.gap')}</span></li>),
39
- 'after' => p_next ? %(<li>#{link.call p_next, next_span}</li>)
40
- : %(<li class="uk-disabled"><a href="#">#{next_span}</a></li>) }
41
- %(<ul id="#{id}" class="pagy-uikit-nav-js uk-pagination uk-flex-center"></ul>#{pagy_json_tag(pagy, :nav, id, tags, pagy.sequels)})
34
+ 'gap' => %(<li class="uk-disabled"><span>#{pagy_t 'pagy.nav.gap'}</span></li>),
35
+ 'after' => pagy_uikit_next_html(pagy, link) }
36
+
37
+ html = %(<ul#{p_id} class="pagy-njs pagy-uikit-nav-js uk-pagination uk-flex-center"></ul>)
38
+ html << pagy_json_tag(pagy, :nav, tags, pagy.sequels(steps))
42
39
  end
43
40
 
44
41
  # Javascript combo pagination for uikit: it returns a nav and a JSON tag used by the Pagy.combo_nav javascript
45
- def pagy_uikit_combo_nav_js(pagy, id=pagy_id)
46
- link, p_prev, p_next, p_page, p_pages = pagy_link_proc(pagy), pagy.prev, pagy.next, pagy.page, pagy.pages
42
+ def pagy_uikit_combo_nav_js(pagy, deprecated_id=nil, pagy_id: nil, link_extra: '')
43
+ pagy_id = Pagy.deprecated_arg(:id, deprecated_id, :pagy_id, pagy_id) if deprecated_id
44
+ p_id = %( id="#{pagy_id}") if pagy_id
45
+ link = pagy_link_proc(pagy, link_extra: link_extra)
46
+ p_page = pagy.page
47
+ p_pages = pagy.pages
48
+ input = %(<input type="number" min="1" max="#{p_pages}" value="#{p_page}" class="uk-input" style="padding: 0; text-align: center; width: #{p_pages.to_s.length+1}rem;">)
49
+
50
+ %(<div#{p_id} class="pagy-uikit-combo-nav-js uk-button-group">#{
51
+ if (p_prev = pagy.prev)
52
+ link.call p_prev, pagy_t('pagy.nav.prev'), 'class="uk-button uk-button-default"'
53
+ else
54
+ %(<button class="uk-button uk-button-default" disabled>#{pagy_t 'pagy.nav.prev'}</button>)
55
+ end
56
+ }<div class="uk-text-middle uk-margin-left uk-margin-right">#{
57
+ pagy_t 'pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages
58
+ }</div>#{
59
+ if (p_next = pagy.next)
60
+ link.call p_next, pagy_t('pagy.nav.next'), 'class="uk-button uk-button-default"'
61
+ else
62
+ %(<button class="uk-button uk-button-default" disabled>#{pagy_t 'pagy.nav.next'}</button>)
63
+ end
64
+ }</div>#{
65
+ pagy_json_tag pagy, :combo_nav, p_page, pagy_marked_link(link)
66
+ })
67
+ end
47
68
 
48
- html = %(<div id="#{id}" class="pagy-uikit-combo-nav-js uk-button-group">)
49
- html = html + (p_prev ? link.call(p_prev, pagy_t('pagy.nav.prev'), 'class="uk-button uk-button-default"')
50
- : %(<button class="uk-button uk-button-default" disabled>#{pagy_t('pagy.nav.prev')}</button>))
51
69
 
52
- html << %(<div class="uk-text-middle uk-margin-left uk-margin-right">)
53
- input = %(<input type="number" min="1" max="#{p_pages}" value="#{p_page}" class="uk-input" style="padding: 0; text-align: center; width: #{p_pages.to_s.length+1}rem;">)
54
- html << pagy_t('pagy.combo_nav_js', page_input: input, count: p_page, pages: p_pages) + '</div>'
55
70
 
56
- html << (p_next ? link.call(p_next, pagy_t('pagy.nav.next'), 'class="uk-button uk-button-default"')
57
- : %(<button class="uk-button uk-button-default" disabled>#{pagy_t('pagy.nav.next')}</button>))
71
+ private
72
+
73
+ def pagy_uikit_prev_html(pagy, link)
74
+ previous_span = %(<span uk-pagination-previous>#{pagy_t 'pagy.nav.prev'}</span>)
75
+ if (p_prev = pagy.prev)
76
+ %(<li>#{link.call p_prev, previous_span}</li>)
77
+ else
78
+ %(<li class="uk-disabled"><a href="#">#{previous_span}</a></li>)
79
+ end
80
+ end
81
+
82
+ def pagy_uikit_next_html(pagy, link)
83
+ next_span = %(<span uk-pagination-next>#{pagy_t 'pagy.nav.next'}</span>)
84
+ if (p_next = pagy.next)
85
+ %(<li>#{link.call p_next, next_span}</li>)
86
+ else
87
+ %(<li class="uk-disabled"><a href="#">#{next_span}</a></li>)
88
+ end
89
+ end
58
90
 
59
- html << %(</div>#{pagy_json_tag(pagy, :combo_nav, id, p_page, pagy_marked_link(link))})
60
- end
61
91
  end
62
92
  end
data/lib/pagy/frontend.rb CHANGED
@@ -1,26 +1,31 @@
1
1
  # See Pagy::Frontend API documentation: https://ddnexus.github.io/pagy/api/frontend
2
- # encoding: utf-8
3
2
  # frozen_string_literal: true
4
3
 
5
4
  require 'yaml'
6
5
 
7
6
  class Pagy
8
7
 
9
- PAGE_PLACEHOLDER = '__pagy_page__' # string used for search and replace, hardcoded also in the pagy.js file
8
+ PAGE_PLACEHOLDER = '__pagy_page__' # string used for search and replace, hardcoded also in the pagy.js file
10
9
 
11
10
  # I18n static hash loaded at startup, used as default alternative to the i18n gem.
12
11
  # see https://ddnexus.github.io/pagy/api/frontend#i18n
13
- I18n = eval(Pagy.root.join('locales', 'utils', 'i18n.rb').read) #rubocop:disable Security/Eval
12
+ I18n = eval Pagy.root.join('locales', 'utils', 'i18n.rb').read #rubocop:disable Security/Eval
14
13
 
15
14
  module Helpers
16
15
  # This works with all Rack-based frameworks (Sinatra, Padrino, Rails, ...)
17
- def pagy_url_for(page, pagy, url=false)
18
- p_vars = pagy.vars; params = request.GET.merge(p_vars[:params]); params[p_vars[:page_param].to_s] = page
19
- "#{request.base_url if url}#{request.path}?#{Rack::Utils.build_nested_query(pagy_get_params(params))}#{p_vars[:anchor]}"
16
+ def pagy_url_for(pagy, page, deprecated_url=nil, absolute: nil)
17
+ absolute = Pagy.deprecated_arg(:url, deprecated_url, :absolute, absolute) if deprecated_url
18
+ pagy, page = Pagy.deprecated_order(pagy, page) if page.is_a?(Pagy)
19
+ p_vars = pagy.vars
20
+ params = request.GET.merge(p_vars[:params])
21
+ params[p_vars[:page_param].to_s] = page
22
+ params[p_vars[:items_param].to_s] = p_vars[:items] if defined?(UseItemsExtra)
23
+ query_string = "?#{Rack::Utils.build_nested_query(pagy_get_params(params))}" unless params.empty?
24
+ "#{request.base_url if absolute}#{request.path}#{query_string}#{p_vars[:fragment]}"
20
25
  end
21
26
 
22
27
  # Sub-method called only by #pagy_url_for: here for easy customization of params by overriding
23
- def pagy_get_params(params) params end
28
+ def pagy_get_params(params) = params
24
29
  end
25
30
 
26
31
  # All the code here has been optimized for performance: it may not look very pretty
@@ -30,43 +35,70 @@ class Pagy
30
35
  include Helpers
31
36
 
32
37
  # Generic pagination: it returns the html with the series of links to the pages
33
- def pagy_nav(pagy)
34
- link, p_prev, p_next = pagy_link_proc(pagy), pagy.prev, pagy.next
38
+ def pagy_nav(pagy, pagy_id: nil, link_extra: '')
39
+ p_id = %( id="#{pagy_id}") if pagy_id
40
+ link = pagy_link_proc(pagy, link_extra: link_extra)
41
+ p_prev = pagy.prev
42
+ p_next = pagy.next
35
43
 
36
- html = (p_prev ? %(<span class="page prev">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"'}</span> )
37
- : %(<span class="page prev disabled">#{pagy_t('pagy.nav.prev')}</span> ))
44
+ html = +%(<nav#{p_id} class="pagy-nav pagination" role="navigation" aria-label="pager">)
45
+ html << if p_prev
46
+ %(<span class="page prev">#{link.call p_prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"'}</span> )
47
+ else
48
+ %(<span class="page prev disabled">#{pagy_t('pagy.nav.prev')}</span> )
49
+ end
38
50
  pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
39
- html << if item.is_a?(Integer); %(<span class="page">#{link.call item}</span> ) # page link
40
- elsif item.is_a?(String) ; %(<span class="page active">#{item}</span> ) # current page
41
- elsif item == :gap ; %(<span class="page gap">#{pagy_t('pagy.nav.gap')}</span> ) # page gap
51
+ html << case item
52
+ when Integer then %(<span class="page">#{link.call item}</span> ) # page link
53
+ when String then %(<span class="page active">#{item}</span> ) # current page
54
+ when :gap then %(<span class="page gap">#{pagy_t('pagy.nav.gap')}</span> ) # page gap
42
55
  end
43
56
  end
44
- html << (p_next ? %(<span class="page next">#{link.call p_next, pagy_t('pagy.nav.next'), 'aria-label="next"'}</span>)
45
- : %(<span class="page next disabled">#{pagy_t('pagy.nav.next')}</span>))
46
- %(<nav class="pagy-nav pagination" role="navigation" aria-label="pager">#{html}</nav>)
57
+ html << if p_next
58
+ %(<span class="page next">#{link.call p_next, pagy_t('pagy.nav.next'), 'aria-label="next"'}</span>)
59
+ else
60
+ %(<span class="page next disabled">#{pagy_t('pagy.nav.next')}</span>)
61
+ end
62
+ html << %(</nav>)
47
63
  end
48
64
 
49
65
  # Return examples: "Displaying items 41-60 of 324 in total" of "Displaying Products 41-60 of 324 in total"
50
- def pagy_info(pagy, item_name=nil)
51
- key = if (count = pagy.count) == 0 ; 'pagy.info.no_items'
52
- else pagy.pages == 1 ? 'pagy.info.single_page' : 'pagy.info.multiple_pages'
53
- end
54
- pagy_t(key, item_name: item_name || pagy_t(pagy.vars[:i18n_key], count: count), count: count, from: pagy.from, to: pagy.to)
66
+ def pagy_info(pagy, deprecated_item_name=nil, pagy_id: nil, item_name: nil, i18n_key: nil)
67
+ p_id = %( id="#{pagy_id}") if pagy_id
68
+ item_name = Pagy.deprecated_arg(:item_name, deprecated_item_name, :item_name, item_name) if deprecated_item_name
69
+ p_count = pagy.count
70
+ key = if p_count.zero? then 'pagy.info.no_items'
71
+ elsif pagy.pages == 1 then 'pagy.info.single_page'
72
+ else 'pagy.info.multiple_pages'
73
+ end
74
+
75
+ %(<span#{p_id} class="pagy-info">#{
76
+ pagy_t key, item_name: item_name || pagy_t(i18n_key || pagy.vars[:i18n_key], count: p_count),
77
+ count: p_count, from: pagy.from, to: pagy.to
78
+ }</span>)
55
79
  end
56
80
 
57
81
  # Returns a performance optimized proc to generate the HTML links
58
82
  # Benchmarked on a 20 link nav: it is ~22x faster and uses ~18x less memory than rails' link_to
59
- def pagy_link_proc(pagy, link_extra='')
60
- p_prev, p_next = pagy.prev, pagy.next
61
- a, b = %(<a href="#{pagy_url_for(PAGE_PLACEHOLDER, pagy)}" #{pagy.vars[:link_extra]} #{link_extra}).split(PAGE_PLACEHOLDER, 2)
62
- lambda {|n, text=n, extra=''| "#{a}#{n}#{b}#{ if n == p_prev ; ' rel="prev"'
63
- elsif n == p_next ; ' rel="next"'
64
- else '' end } #{extra}>#{text}</a>"}
83
+ def pagy_link_proc(pagy, deprecated_link_extra=nil, link_extra: '')
84
+ link_extra = Pagy.deprecated_arg(:link_extra, deprecated_link_extra, :link_extra, link_extra) if deprecated_link_extra
85
+ p_prev = pagy.prev
86
+ p_next = pagy.next
87
+ left, right = %(<a href="#{pagy_url_for pagy, PAGE_PLACEHOLDER}" #{pagy.vars[:link_extra]} #{link_extra}).split(PAGE_PLACEHOLDER, 2)
88
+ lambda do |num, text=num, extra_attrs=''|
89
+ %(#{left}#{num}#{right}#{ case num
90
+ when p_prev then ' rel="prev"'
91
+ when p_next then ' rel="next"'
92
+ else ''
93
+ end } #{extra_attrs}>#{text}</a>)
94
+ end
65
95
  end
66
96
 
67
97
  # Similar to I18n.t: just ~18x faster using ~10x less memory
68
- # (@pagy_locale explicitly initilized in order to avoid warning)
69
- def pagy_t(key, **opts) = Pagy::I18n.t(@pagy_locale||=nil, key, **opts)
98
+ # (@pagy_locale explicitly initialized in order to avoid warning)
99
+ def pagy_t(key, **opts)
100
+ Pagy::I18n.t @pagy_locale||=nil, key, **opts
101
+ end
70
102
 
71
103
  end
72
104
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagy
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Domizio Demichelis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-10 00:00:00.000000000 Z
11
+ date: 2021-04-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'Agnostic pagination in plain ruby: it works with any framework, ORM
14
14
  and DB type, with all kinds of collections, even pre-paginated, scopes, Arrays,
@@ -22,8 +22,8 @@ files:
22
22
  - LICENSE.txt
23
23
  - lib/config/pagy.rb
24
24
  - lib/javascripts/pagy.js
25
- - lib/locales/README.md
26
25
  - lib/locales/bg.yml
26
+ - lib/locales/bs.yml
27
27
  - lib/locales/ca.yml
28
28
  - lib/locales/cs.yml
29
29
  - lib/locales/da.yml
@@ -31,6 +31,7 @@ files:
31
31
  - lib/locales/en.yml
32
32
  - lib/locales/es.yml
33
33
  - lib/locales/fr.yml
34
+ - lib/locales/hr.yml
34
35
  - lib/locales/id.yml
35
36
  - lib/locales/it.yml
36
37
  - lib/locales/ja.yml
@@ -42,6 +43,7 @@ files:
42
43
  - lib/locales/pt-BR.yml
43
44
  - lib/locales/pt.yml
44
45
  - lib/locales/ru.yml
46
+ - lib/locales/sr.yml
45
47
  - lib/locales/sv-SE.yml
46
48
  - lib/locales/sv.yml
47
49
  - lib/locales/sw.yml
@@ -55,6 +57,7 @@ files:
55
57
  - lib/pagy.rb
56
58
  - lib/pagy/backend.rb
57
59
  - lib/pagy/countless.rb
60
+ - lib/pagy/deprecation.rb
58
61
  - lib/pagy/exceptions.rb
59
62
  - lib/pagy/extras/arel.rb
60
63
  - lib/pagy/extras/array.rb
@@ -73,6 +76,7 @@ files:
73
76
  - lib/pagy/extras/searchkick.rb
74
77
  - lib/pagy/extras/semantic.rb
75
78
  - lib/pagy/extras/shared.rb
79
+ - lib/pagy/extras/standalone.rb
76
80
  - lib/pagy/extras/support.rb
77
81
  - lib/pagy/extras/trim.rb
78
82
  - lib/pagy/extras/uikit.rb
@@ -92,7 +96,6 @@ files:
92
96
  - lib/templates/uikit_nav.html.erb
93
97
  - lib/templates/uikit_nav.html.haml
94
98
  - lib/templates/uikit_nav.html.slim
95
- - pagy.gemspec
96
99
  homepage: https://github.com/ddnexus/pagy
97
100
  licenses:
98
101
  - MIT
@@ -112,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
115
  - !ruby/object:Gem::Version
113
116
  version: '0'
114
117
  requirements: []
115
- rubygems_version: 3.2.3
118
+ rubygems_version: 3.2.15
116
119
  signing_key:
117
120
  specification_version: 4
118
121
  summary: The Ultimate Pagination Ruby Gem
@@ -1,35 +0,0 @@
1
- # Pagy locales
2
-
3
- ### Please, submit your translation!
4
-
5
- If you find that some translation could be improved, please, create an issue.
6
-
7
- If you are using pagy with some language missing from the dictionary files, please, submit your translation!
8
-
9
- You can create a Pull Request for your language, and get all the help you need to correctly complete it. Here is a check list.
10
-
11
- ### Check list for a new dictionary file:
12
-
13
- - [ ] Find the pluralization rule for your language
14
-
15
- - [ ] Find the locale file you need in the [list of pluralizations](https://github.com/svenfuchs/rails-i18n/tree/master/rails/pluralization) and check the pluralization rule in it. For example it is `::RailsI18n::Pluralization::OneOther.with_locale(:en)` for `en.rb`. Note the rule part i.e. `OneOther`. In pagy that translates to the symbol `:one_other`.
16
-
17
- - [ ] If the pluralization rule of your language is not the `:one_other` default, confirm that the [p11n.rb](https://github.com/ddnexus/pagy/blob/master/lib/locales/utils/p11n.rb) file already defines the pluralization rule of your dictionary file:
18
-
19
- - [ ] If the rule is not defined, you can either: a) Add the rule as a new rule/lambda entry in the `p11n` variable hash and relative tests or b) Just create an issue requesting the addition to the rule/lambda entry and tests.
20
-
21
- - [ ] Add your language to the `plurals` hash in the file.
22
-
23
- - [ ] add/edit the first line comment in the language rule in your dictionary file (e.g. `# :one_other pluralization ...`
24
-
25
- - [ ] The mandatory pluralized entry in the dictionary file is the `item_name`. Please, provide all the plurals needed by your language. E.g. if your language uses the `:east_slavic` you should provide the plurals for `one`, `few`, `many` and `other`, if it uses `:one_other`, you should provide `one` and `other` plurals. If it uses `:other` you should only provide a single value. Look into other dictionary files to get some example. Ask if in doubt.
26
-
27
- - [ ] The other entries in the dictionary file don't need any plural variant in most languages since the pluralization of the `item_name` in the sentence is enough. However, in some language, a whole sentence might need to be written in different ways for different counts. In that case you should add the different plurals for the sentence and the `count` will trigger the one that applies.
28
-
29
- Feel free to ask for help in your Pull Request.
30
-
31
- ### Useful Links
32
-
33
- * [Pagy I18n Documentation](https://ddnexus.github.io/pagy/api/frontend#i18n)
34
- * [I18n Extra](https://ddnexus.github.io/pagy/extras/i18n)
35
-