yap 0.0.1 → 0.0.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/yap.rb +17 -7
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6a6e5086f1ca35d0aaf0fadbc47d90b07734bd2b
4
- data.tar.gz: 42d6f6430addc6accecfb55958c689528aa11131
3
+ metadata.gz: 652e0f8b08ebf6db3a3d4abcef18ff18c2b396dd
4
+ data.tar.gz: bc167399e7a104e1a2976c321e234a1ae6ef0e73
5
5
  SHA512:
6
- metadata.gz: 015d9317569706f7fe83ac1e877b4c750480fd05e09d79f048df30083b505448f5d6f021d588dae713a0fc7bdb89d7fca278989e56996af33e90f5fd32fa22bc
7
- data.tar.gz: 3c98bd37fa8c4988dec2e2cd8a4cdac610f3c179f92d4c884e35f46e14559403bfdc708407f8f564577197fad4dfea9436d25dff35033ae694929e2336c807ed
6
+ metadata.gz: 1ddb459b81ce8a96002c204820ddda8ded839280f9033c943dc48b98b44533593e829c48d5671faa8c72eef95ff47171b46b8a93fec34cb1807179d8fab21262
7
+ data.tar.gz: 9f27ba7825b48da80fd3a2d520c3709498aa99a8da7a53b7530c7c0bb5a89490128e232b1caacf06ccccd7b9148a1168a76b5baa255270e632ce34fac706fa6d
data/lib/yap.rb CHANGED
@@ -27,6 +27,8 @@ module Yap
27
27
  end
28
28
 
29
29
  included do
30
+ extend ClassMethods
31
+
30
32
  scope :paginate, -> (params = {}) {
31
33
  page, per_page, sort, direction = extract_pagination_params(params)
32
34
  limit(per_page).offset((page-1)*per_page).order(sort => direction)
@@ -35,17 +37,17 @@ module Yap
35
37
  private
36
38
 
37
39
  def self.extract_pagination_params(params)
38
- page = params[:page].present? ? extract_number(params[:page]) : DEFAULTS.page
39
- per_page = params[:per_page].present? ? extract_number(params[:per_page]) : DEFAULTS.per_page
40
- sort = params[:sort].present? ? extract_sort(params[:sort]) : DEFAULTS.sort
41
- direction = params[:direction].present? ? extract_direction(params[:direction]) : DEFAULTS.direction
40
+ page = extract_number(params[:page], DEFAULTS.page)
41
+ per_page = extract_number(params[:per_page], DEFAULTS.per_page)
42
+ sort = extract_sort(params[:sort])
43
+ direction = extract_direction(params[:direction])
42
44
 
43
45
  return page, per_page, sort, direction
44
46
  end
45
47
 
46
- def self.extract_number(number)
48
+ def self.extract_number(number, default)
47
49
  begin
48
- number = Integer(number)
50
+ number = number.present? ? Integer(number) : default
49
51
  rescue
50
52
  raise PaginationError.new("'#{number}' is not a valid number.")
51
53
  end
@@ -55,16 +57,24 @@ module Yap
55
57
  end
56
58
 
57
59
  def self.extract_sort(sort)
60
+ sort = sort.present? ? sort : DEFAULTS.sort
58
61
  raise PaginationError.new("Cannot sort by '#{sort}'.") unless column_names.include? sort.to_s
59
62
  sort
60
63
  end
61
64
 
62
65
  def self.extract_direction(direction)
63
- dir = direction.downcase.to_sym
66
+ dir = direction.present? ? direction.downcase.to_sym : DEFAULTS.direction
64
67
  raise PaginationError.new("'#{direction}' is not a valid direction. Use 'asc' or 'desc'.") unless [:asc, :desc].include? dir
65
68
  dir
66
69
  end
67
70
  end
68
71
 
72
+ module ClassMethods
73
+ def last_page(params)
74
+ per_page = extract_number(params[:per_page], DEFAULTS.per_page)
75
+ (count / per_page.to_f).ceil
76
+ end
77
+ end
78
+
69
79
  class PaginationError < StandardError; end
70
80
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Finn Glöe
@@ -58,7 +58,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 2.1.0
62
62
  required_rubygems_version: !ruby/object:Gem::Requirement
63
63
  requirements:
64
64
  - - ">="