yap 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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
  - - ">="