moar 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c1b234cea1895e80c38ebe0568b780d05af5dab2bbff91aa02a43d30ac624b0
4
- data.tar.gz: 44c2c5379aeb4b18fcbc4e5d5d957a48157228038567137f6316459d664fdb9c
3
+ metadata.gz: a326ba6916580da9c124db958eda52918d81fde5d13f6516cb613ac317181002
4
+ data.tar.gz: 878bac6ff03712086eb27dcb84c00a5982e02314899b52245dca0b7229a3eebe
5
5
  SHA512:
6
- metadata.gz: 5e6fb50987247ca2c73fe35ac359f56e0c854d641e0e5ad8448f05381c7788196df96bcefbe49dedd538bac13cf855998870049482e36e823b047932e7a58496
7
- data.tar.gz: '068724bbd447a433e309c7eedf5d7ef6c21d64cf001107815e8e2ed8765fb091d57f68b482bbc69acc48446a0b0b799959fcbb35e6678732fed59f40ee3806c5'
6
+ metadata.gz: eb2aadac7f69bf538a678a70be57a0405e9834ba45b7661a4d1a76f3002e56ba8d1853c5326d93b46adc862d24b8eb0a5616e012275cad22a1338fe99f70a593
7
+ data.tar.gz: ffee5afebc4dc869440f63bcde6696b40cdf4de21825d7232843aad01afa79d68f9e3f0da9af2156fd28d31b642286b28299c070dc5dcc880a2d7befa28b65e0
data/README.md CHANGED
@@ -25,6 +25,7 @@ With *moar*, this story can be realized using the following code:
25
25
 
26
26
  ```ruby
27
27
  ## app/controllers/posts_controller.rb
28
+
28
29
  class PostsController < ApplicationController
29
30
  # Step 1 (optional): set controller-specific pagination increments
30
31
  moar_increments [10, 20, 30]
@@ -36,8 +37,9 @@ class PostsController < ApplicationController
36
37
  end
37
38
  ```
38
39
 
39
- ```erb
40
+ ```html+erb
40
41
  <!-- app/views/posts/index.html.erb -->
42
+
41
43
  <h1>Posts</h1>
42
44
  <ul id="list-of-posts">
43
45
  <% @posts.each do |post| %>
data/Rakefile CHANGED
@@ -9,14 +9,13 @@ require 'yard'
9
9
  YARD::Rake::YardocTask.new(:doc) do |t|
10
10
  end
11
11
 
12
-
13
12
  require 'bundler/gem_tasks'
14
13
 
15
14
  require 'rake/testtask'
16
15
 
17
16
  Rake::TestTask.new(:test) do |t|
18
17
  t.libs << 'test'
19
- t.pattern = 'test/**/*_test.rb'
18
+ t.test_files = FileList['test/**/*_test.rb'].exclude('test/tmp/**/*')
20
19
  t.verbose = false
21
20
  end
22
21
 
@@ -1,5 +1,3 @@
1
- #require "rails/generators/base"
2
-
3
1
  module Moar
4
2
  # @!visibility private
5
3
  module Generators
data/lib/moar/helper.rb CHANGED
@@ -1,14 +1,13 @@
1
1
  module Moar
2
2
  module Helper
3
3
 
4
- # Generates an anchor element that links to more paginated results.
5
- # If JavaScript is active, and the current page number is less than
4
+ # Renders an anchor element that links to more paginated results.
5
+ # If JavaScript is enabled, and the current page number is less than
6
6
  # the number of pagination increments (see {Moar::Config#increments}
7
7
  # or {Moar::Controller::ClassMethods#moar_increments}), the link
8
- # will use Ajax to fetch the results and inject them into the
9
- # element matching the CSS selector specified by +target+.
10
- # Otherwise, the link will behave normally and navigate to the next
11
- # page of results.
8
+ # will use Ajax to fetch the results and append them to the element
9
+ # matching the CSS selector specified by +target+. Otherwise, the
10
+ # link will navigate to the next page of results.
12
11
  #
13
12
  # The text of the link is determined via I18n using translation key
14
13
  # +:"moar.more"+. A +results_name+ interpolation argument is
@@ -18,17 +17,13 @@ module Moar
18
17
  # is an array of +CowBell+ models, the link text will be "Need more
19
18
  # cow bells!".
20
19
  #
21
- # This helper method accepts an +html_options+ Hash, and passes it
22
- # to Rails' +ActionView::Helpers::UrlHelper#link_to+. See its
23
- # documentation for information about available options.
24
- #
25
20
  # If no more results are available, this helper method will return
26
21
  # nil so that no link is rendered. Whether there are more results
27
- # is estimated by comparing +results.length+ with the limit applied
28
- # by {Moar::Controller#moar}. This technique eliminates the need
29
- # for an extra database query, but can result in a false positive
30
- # (i.e. rendering a link to an empty page) when the actual last page
31
- # of results is also a full page. This is deemed an acceptable
22
+ # is estimated by comparing +results.size+ with the limit applied by
23
+ # {Moar::Controller#moar}. This technique eliminates the need for
24
+ # an extra database query, but can result in a false positive (i.e.
25
+ # rendering a link to an empty page) when the actual last page of
26
+ # results is also a full page. This is deemed an acceptable
32
27
  # trade-off because with a large number of pages and a large total
33
28
  # number of results per page it is an unlikely occurrence, and
34
29
  # because an extra database query cannot entirely prevent a link to
@@ -36,23 +31,32 @@ module Moar
36
31
  # user can click through to the final page.
37
32
  #
38
33
  # @param results [ActiveRecord::Relation, Array<ActiveModel::Naming>]
34
+ # query results for current page
39
35
  # @param target [String]
36
+ # CSS selector of element containing rendered results
40
37
  # @param html_options [Hash]
38
+ # HTML options (see +ActionView::Helpers::UrlHelper#link_to+)
41
39
  # @return [String, nil]
42
40
  # @raise [RuntimeError]
43
41
  # if controller action did not invoke {Moar::Controller#moar}
44
42
  def link_to_more(results, target, html_options = {})
45
43
  raise "#{controller.class}##{action_name} did not invoke #moar" unless defined?(@moar)
46
44
 
47
- unless results.length < @moar.limit
45
+ unless results.size < @moar.limit
48
46
  params = request.query_parameters.except(Moar.config.accumulation_param.to_s)
49
47
  params[Moar.config.page_param.to_s] = @moar.page + 1
50
48
 
51
49
  options = { controller: controller_path, action: action_name, params: params }
52
50
 
51
+ model_name = if results.is_a?(ActiveRecord::Relation)
52
+ results.model
53
+ else
54
+ results.first
55
+ end.model_name
56
+
53
57
  i18n_options = {
54
- results_name: results.first.model_name.human(
55
- count: 2, default: results.first.model_name.human.pluralize(I18n.locale)
58
+ results_name: model_name.human(
59
+ count: 2, default: model_name.human.pluralize(I18n.locale)
56
60
  ).downcase,
57
61
  }
58
62
 
data/lib/moar/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Moar
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Hefner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-18 00:00:00.000000000 Z
11
+ date: 2019-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '5.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '5.1'
27
27
  - !ruby/object:Gem::Dependency
@@ -168,8 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
168
  - !ruby/object:Gem::Version
169
169
  version: '0'
170
170
  requirements: []
171
- rubyforge_project:
172
- rubygems_version: 2.7.6
171
+ rubygems_version: 3.0.1
173
172
  signing_key:
174
173
  specification_version: 4
175
174
  summary: More-style pagination for Rails